Py2exe不编译Pandas read_excel

时间:2014-09-24 08:32:17

标签: python python-2.7 pandas py2exe setup.py

我遇到了Windows上的Python 2.7.7中的py2exe和pandas问题(安装了Anaconda发行版的版本)。

我想创建一个可执行文件:

  1. 要求您插入要阅读的Excel文件的名称
  2. 打印或使用列中的元素执行其他操作
  3. 以下是我的代码名称test.py

    的简化形式
    from pandas import read_excel
    
    file_name_db = input('Insert file name (e.g. "database1.xls"): ')
    
    data = read_excel(file_name_db, sheet_name_db=0, index_col=None, na_values=['NA'])    
    
    print data.unit
    
    raw_input("Press enter to exit")
    

    然后我使用这个setup.py文件:

    from distutils.core import setup
    
    import py2exe
    
    import pandas
    
    setup(options = {"py2exe":{"includes": ["zmq.backend.cython"],"excludes": ["zmq.libzmq"], "dll_excludes": ["MSVCP90.dll","HID.DLL", "w9xpopen.exe", "libzmq.pyd"]}}, console = [{'script': 'test2.py'}])
    

    最后,我只需在cmd窗口python setup.py py2exe

    中执行

    请注意,setup()中的所有选项均已经过测试,以避免所有.dll编译问题。

    结果:

    1. py2exe在test.exe文件夹
    2. 中生成dist时没有警告或错误 虽然test.exe在Spyder 中正常有效,但
    3. test.py仍未运行 即使我在test.exe中插入from pandas import read_excel但我没有要求test.py个文件
    4. input也无法运行
    5. 在情况2.或3.当我双击test.exe时,黑色命令窗口出现闪烁光标10-15秒,然后出现一条快速消息,窗口立即关闭。 (我无法阅读消息所说的内容,我无法在builddist个文件夹中找到任何日志文件。
    6. 请注意,test.exenumpydatetime等模块正确运行但没有pandas
    7. 我希望我已经清楚地解释了这个问题。

      提前感谢您花时间和精力帮我解决这个问题!

      罗伯特

1 个答案:

答案 0 :(得分:4)

我认为问题是您需要在setup.py中指定matplotlib数据文件。至少那是我在尝试你的例子时遇到的错误。

这是我的test.py:

from pandas import read_excel

file_name_db = raw_input('Insert file name (e.g. "database1.xls"): ')
data = read_excel(file_name_db, sheet_name_db=0, index_col=None, na_values=['NA'])    
print data
raw_input("Press enter to exit")

这是我的setup.py:

from distutils.core import setup
import py2exe
import pandas
import matplotlib

setup(options = {
    "py2exe":
        {
            "includes": ["zmq.backend.cython"],
            "excludes": ["zmq.libzmq"], 
            "dll_excludes": ["MSVCP90.dll","HID.DLL", "w9xpopen.exe", "libzmq.pyd"]
        }
    },
    data_files=matplotlib.get_py2exe_datafiles(),
    console = [{'script': 'test.py'}]
    )

我必须编辑test.py代码才能运行它。我将“data_files =”行添加到setup.py中。 test.py和内置的test.exe现在都适用于我。

我是如何找到答案的?

为了调试这个,我从命令行运行了test.exe,而不是双击它。这样你就会看到输出,而不是闪烁然后消失的控制台。当我这样做时,我看到了关于matplotlib数据文件的错误,这导致我google和解决方案。

参考导入问题

道歉,但我无法回复评论,所以我编辑了我的帖子。可能是您安装了不同版本的组件。我搜索了那个错误,似乎没有任何明显的解决方案。我有python v2.7.5(通过activestate),pandas 0.14.1(通过scipy stack 14.8.27)