【发布时间】:2012-05-08 18:46:38
【问题描述】:
以下函数基于the Python gzip module docs 中的 Python 示例代码。它在带有默认 Python 2.6.x 的 Ubuntu 10.04 上可靠地运行。然而,在 Ubuntu 11.04 上,代码失败 @writelines()。
在一台 11.04 机器上,失败消息报告为 'module' object has no attribute 'BufferedIOBase'。另一台 11.04 机器报告了不同的消息 No module named numpy。然而,两台机器上都安装了 numpy 包。
有谁知道 11.04 上缺少任何 Python 依赖项或其他问题会导致此问题?
def _compress(inp,out):
import gzip
f_out = gzip.open(out,'wb')
f_in = open(inp,'rb')
f_out.writelines(f_in)
f_out.close()
f_in.close()
os.unlink(inp)
【问题讨论】:
-
numpy和gzip有什么关系?您可能在错误的地方寻找错误。 -
你有一个
io.py文件,或者一个io/__init__.py周围可能会被导入吗? -
我看到了 igraph 的讨论。不一样,因为这段代码在 writelines() 上抛出错误,而不是在“import”上。此外,sys.path 中没有其他 io.py (et.al.)。我使用大量数据文件将更新发送给用户,我正在等待他报告下面的代码是否解决了问题。
-
我的立场是正确的。在 sys.path 中有一个名为 io.py 的竞争文件。重命名该文件解决了这个问题。但是,将 io.py 留在那里并运行代码更改以消除 writelines() 也可以解决问题。有趣的是,这个问题不会出现在 10.04 或 10.10(都是 Python 2.6x)上。删除 io.py 或避免 writelines() 或两者都可以解决问题。谢谢大家。