使用cx_Freeze冻结pandas/NumPy 1.7.0代码时出错



我正试图用cx_freeze冻结一个Python脚本。剧本利用了熊猫。当我运行cx_Freeze创建的可执行文件时,我会得到以下Traceback:

[...]  
File "C:Python27libsite-packagespandas__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 (pandashashtable.c:20273)  
File "C:Python27libsite-packagesnumpy__init__.py", line 147, in <module>  
from core import *  
AttributeError: 'module' object has no attribute 'sys'

我唯一使用的Panda代码(用于测试)是:

from pandas import DataFrame
import pandas as pd
d = {'one' : [1., 2., 3., 4.],
     'two' : [4., 3., 2., 1.]}
df = DataFrame(d)

当我试图在cx_Freeze设置文件的"packages"下包含"pandas"时,它在冻结过程中失败,原因是:

ValueError: too many values to unpack  

我在Windows7(64位)上的Python 2.7.3的32位和64位版本中也遇到过同样的问题。pandas版本为0.10.1,cx_Freeze版本为4.3.1。

你们这些熊猫或cx_冰冻之神有什么想法吗?

我刚刚看了/numpy/core/init.py,注意到最后一行:

有"del sys"

如果你把这一行注释掉,它就会按预期工作。我还注意到numpy 1.6.2 中没有"del sys"

你可以试着联系numpy,看看他们为什么需要这样做。

这两个错误的原因似乎都是NumPy 1.7.0(panda构建在NumPy上)。当我使用NumPy 1.6.2运行代码时,一切都正常。

最新更新