使用cx_Freeze冻结pandas/NumPy 1.7.0代码时出错
我正在尝试用cx_Freeze来打包一个Python脚本。这个脚本使用了pandas库。当我运行cx_Freeze生成的可执行文件时,出现了以下错误信息:
[...]
File "C:\Python27\lib\site-packages\pandas\__init__.py", line 6, in <module>
from . import hashtable, tslib, lib
File "ExtensionLoader_pandas_hashtable.py", line 11, in <module>
File "numpy.pxd", line 156, in init pandas.hashtable (pandas\hashtable.c:20273)
File "C:\Python27\lib\site-packages\numpy\__init__.py", line 147, in <module>
from core import *
AttributeError: 'module' object has no attribute 'sys'
我在测试中使用的唯一pandas代码是:
from pandas import DataFrame
import pandas as pd
d = {'one' : [1., 2., 3., 4.],
'two' : [4., 3., 2., 1.]}
df = DataFrame(d)
当我试图在cx_Freeze的设置文件中把'pandas'加到'packages'里时,打包过程中失败了,出现了:
ValueError: too many values to unpack
我在Windows7(64位)上遇到了这个问题,使用的是Python 2.7.3的32位和64位版本。pandas的版本是0.10.1,cx_Freeze的版本是4.3.1。
有没有哪位对pandas或cx_Freeze很懂的朋友能给点建议?
2 个回答
0
这两个错误的原因似乎是因为使用了 NumPy 1.7.0
版本(而 pandas 是建立在 NumPy 之上的)。当我用 NumPy 1.6.2
运行代码时,一切都正常。
5
我刚刚查看了/numpy/core/init.py文件,注意到倒数第二行写着:
有一句“del sys”
如果你把这一行注释掉,程序就会按预期正常工作。我还发现,在numpy 1.6.2版本中没有“del sys”这句话。
你可以尝试联系numpy,看看他们为什么需要这样做。