【问题标题】:py2exe with Numpy/Scipy and Matplotlib DLL load fail带有 Numpy/Scipy 和 Matplotlib DLL 的 py2exe 加载失败
【发布时间】:2013-08-13 14:26:22
【问题描述】:

我有一个脚本,可以生成一些我想运行的绘图,生成一个可执行文件,以便一些无法处理 CLI 的朋友可以使用它。但是问题是 py2exe 将编译简单的脚本,例如 print 'hello world',但是当尝试包含 matplotlibnumpy 时,我遇到了问题。

import sys
import numpy as np
import inspect
import itertools
from pylab import *
from matplotlib import pyplot as plt

这些是脚本需要的所有模块,这里是 py2exe 错误:

*** searching for required modules ***
*** parsing results ***
Traceback (most recent call last):
  File "setup.py", line 26, in <module>
    data_files=matplotlib.get_py2exe_datafiles(),)
  File "C:\Python27\lib\distutils\core.py", line 152, in setup
    dist.run_commands()
  File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 243, in run
self._run()
  File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 299, in _run
    py_files, extensions, builtins = self.parse_mf_results(mf)
  File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 1095, in parse_
mf_results
    import Tkinter
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 38, in <module>
    import FixTk
  File "C:\Python27\lib\lib-tk\FixTk.py", line 65, in <module>
    import _tkinter
ImportError: DLL load failed: %1 is not a valid Win32 application.

在调用python setup.py py2exe 后生成,文件setup.py 定义为:

from distutils.core import setup
import py2exe
import sys
from glob import glob
data_files = [("Microsoft.VC90.CRT", glob(r'C:\Python27\Microsoft.VC90.CRT\*.*'))]
sys.path.append("C:\\Python27\\Microsoft.VC90.CRT")
setup(
    data_files=data_files,
    console = ['sequence-entropy.py']
  )

我已经将 VC redist 的东西放在了setup.py 中列出的目录中。 当 CLI 在我的 Windows 机器(不仅仅是编写它的系统)上运行该脚本时,该脚本运行并生成绘图。我已经包含了 VC 的东西,我不确定发生了什么。

【问题讨论】:

    标签: python numpy matplotlib scipy py2exe


    【解决方案1】:

    我认为您遇到的问题与此处相同。 Errors with Matplotlib when making an executable with Py2exe (Python)

    我将在这里重复另一个问题的答案。

    您还需要复制 mpl-data 文件夹。检查这个官方维基站点http://www.py2exe.org/index.cgi/MatPlotLib

    import matplotlib
    ...
    setup(
        ...
        data_files=matplotlib.get_py2exe_datafiles(),
    )
    

    对于 py2exe,您将需要在 setup.py 中使用类似的内容。 希望有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多