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

时间:2013-02-19 23:27:19

标签: python numpy pandas cx-freeze

我正在尝试使用cx_Freeze冻结Python脚本。该脚本使用了pandas。当我运行cx_Freeze创建的可执行文件时,我得到以下Traceback:

[...]  
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设置文件中的'packages'下包含'pandas'时,它在冻结过程中失败:

ValueError: too many values to unpack  

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

你们这些熊猫或cx_Freeze上帝有没有想法?

2 个答案:

答案 0 :(得分:5)

我只是看了/ numpy/core/init.py并在最后一行注意到了:

有“del sys”

如果您注释掉这一行,它会按预期工作。我也注意到numpy 1.6.2中没有“del sys”

你可以尝试联系numpy来检查他们为什么需要这样做。

答案 1 :(得分:0)

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