首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CentOS6.6,python2.7.2对象没有属性'StringIO‘

CentOS6.6,python2.7.2对象没有属性'StringIO‘
EN

Stack Overflow用户
提问于 2015-11-25 21:54:19
回答 1查看 318关注 0票数 0

我正在码头容器中运行我的python测试。下面是使用.2.7.2 6.6安装python .2.7.2的Dockerfile的一部分:

代码语言:javascript
复制
RUN cd /tmp && \
    wget https://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz && \
    tar xvfz Python-2.7.2.tgz && \
    cd Python-2.7.2 && \
    ./configure --prefix=/usr/local && \
    make && \
    make altinstall

RUN ln -s /usr/local/bin/python2.7 /usr/local/bin/python

RUN wget https://bootstrap.pypa.io/ez_setup.py -O - | /usr/local/bin/python2.7
RUN /usr/local/bin/easy_install-2.7 pip
RUN pip install python-gflags sqlparse pyyaml requests HTTPretty

在docker容器中运行测试时,我得到了一个异常:

代码语言:javascript
复制
import io
# some code here...
buf = io.StringIO(data)
AttributeError: 'module' object has no attribute 'StringIO'

在本地或服务器env上运行测试时,我不会得到此异常。

我试图在docker容器中执行简单的脚本:

代码语言:javascript
复制
import io
print io.StringIO(None)

效果很好。我很困惑。这里有什么问题吗?

@Blckknght,您是对的,代码有一个名为io的模块:

io.__file__ ::: /root/containerfolder/proejct/py/src/common/io.pyc。但我只能在码头上复制。当我将代码复制到服务器或运行本地时,我就正确了。

io.__file__ ::: /opt/py/ext/python-2.7.2/lib/python2.7/io.pyc

修复它的正确方法是什么?将模块重命名为:)?

答案:

  • @Blckknght是对的,有一个名为"IO“的代码模块(!大写!)隐藏内置的"io“。
  • 我的“本地”MacOS FS不区分大小写,但是保留大小写,它区分了io和IO,这就是为什么我在本地得到正确的"io“。
  • 服务器具有区分大小写的FS。
  • Docker图像具有不区分大小写的FS。这就是为什么只在那里失败的原因。

这是个不错的挑战,谢谢:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-27 11:45:22

  • @Blckknght是对的,有一个名为"IO“的代码模块(!大写!)隐藏内置的"io“。
  • 我的“本地”MacOS FS不区分大小写,但是保留大小写,它区分了io和IO,这就是为什么我在本地得到正确的"io“。
  • 服务器具有区分大小写的FS。
  • Docker图像具有不区分大小写的FS。这就是为什么只在那里失败的原因。

这是个不错的挑战,谢谢:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33927071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档