Py2Exe - 解决 NumPy 和 SciPy 依赖关系
Py2Exe - Addressing NumPy and SciPy dependencies
Objective(最终目标):
我想创建一个独立的可执行 Python 脚本( 仅 一个文件),其中包括 NumPy 和 SciPy 我的应用程序的依赖项。
背景:
根据我的理解,要在 Python 中创建一个可执行脚本 - 可以使用三个选项:
- PyInstaller
- Py2exe
- Cx冻结
我继续尝试使用 Py2exe 进行开发。看起来 CxFreeze 不支持单文件选项(来自文档 here). I also considered the option of using PyInstaller, but ran into issues regarding missing DLLs (similar to what is found here)。即使在我的笔记本电脑上安装了 Microsoft Visual C++ 2010 Redistributable Package 之后,问题仍然存在。
我按照教程使用了 Py2exe here 并且能够使虚拟脚本可执行文件 (Hello World!) 正常工作。但是,我尝试重新修改特定于我的应用程序的 setup.py 脚本以包含 numpy 和 scipy 依赖项(见下文):
from distutils.core import setup
import py2exe,sys,numpy,scipy
sys.argv.append('py2exe')
setup(
console=['Application.py'],
options={
'py2exe': {
'includes':['numpy','scipy','scipy.integrate','scipy.special.*','scipy.linalg.*'],
'bundle_files':1,
'compressed':True
}
},
zipfile=None)
这是我在尝试 运行 脚本时收到的结果错误:
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm 2018.1.4\helpers\pydev\pydev_run_in_console.py", line 52, in run_file
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:\Program Files\JetBrains\PyCharm 2018.1.4\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:/Users/prest/PycharmProjects/Application/setup.py", line 15, in <module>
zipfile=None
File "C:\Python34\lib\distutils\core.py", line 149, in setup
dist.run_commands()
File "C:\Python34\lib\distutils\dist.py", line 955, in run_commands
self.run_command(cmd)
File "C:\Python34\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()
File "C:\Users\prest\PycharmProjects\Application\venv\lib\site-packages\py2exe\distutils_buildexe.py", line 188, in run
self._run()
File "C:\Users\prest\PycharmProjects\Application\venv\lib\site-packages\py2exe\distutils_buildexe.py", line 267, in _run
builder.analyze()
File "C:\Users\prest\PycharmProjects\Application\venv\lib\site-packages\py2exe\runtime.py", line 164, in analyze
mf.import_hook(modname)
File "C:\Users\prest\PycharmProjects\Application\venv\lib\site-packages\py2exe\mf3.py", line 120, in import_hook
module = self._gcd_import(name)
File "C:\Users\prest\PycharmProjects\Application\venv\lib\site-packages\py2exe\mf3.py", line 274, in _gcd_import
return self._find_and_load(name)
File "C:\Users\prest\PycharmProjects\Application\venv\lib\site-packages\py2exe\mf3.py", line 337, in _find_and_load
raise ImportError(name)
ImportError: scipy.linalg.*
这些是我使用的与我的应用程序相关的版本:
- Python3.4
- NumPy 1.14.5
- SciPy 1.1.0
问题:
谁能就我收到此错误的原因以及解决此问题的任何后续步骤提供任何见解?我感谢任何意见!
谢谢,
普雷斯顿
关闭 - 继续使用 PyInstaller 作为单文件可执行文件。我重新修改了脚本以解决特定的依赖项(仅使用 NumPy)。
Objective(最终目标): 我想创建一个独立的可执行 Python 脚本( 仅 一个文件),其中包括 NumPy 和 SciPy 我的应用程序的依赖项。
背景: 根据我的理解,要在 Python 中创建一个可执行脚本 - 可以使用三个选项:
- PyInstaller
- Py2exe
- Cx冻结
我继续尝试使用 Py2exe 进行开发。看起来 CxFreeze 不支持单文件选项(来自文档 here). I also considered the option of using PyInstaller, but ran into issues regarding missing DLLs (similar to what is found here)。即使在我的笔记本电脑上安装了 Microsoft Visual C++ 2010 Redistributable Package 之后,问题仍然存在。
我按照教程使用了 Py2exe here 并且能够使虚拟脚本可执行文件 (Hello World!) 正常工作。但是,我尝试重新修改特定于我的应用程序的 setup.py 脚本以包含 numpy 和 scipy 依赖项(见下文):
from distutils.core import setup
import py2exe,sys,numpy,scipy
sys.argv.append('py2exe')
setup(
console=['Application.py'],
options={
'py2exe': {
'includes':['numpy','scipy','scipy.integrate','scipy.special.*','scipy.linalg.*'],
'bundle_files':1,
'compressed':True
}
},
zipfile=None)
这是我在尝试 运行 脚本时收到的结果错误:
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm 2018.1.4\helpers\pydev\pydev_run_in_console.py", line 52, in run_file
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:\Program Files\JetBrains\PyCharm 2018.1.4\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:/Users/prest/PycharmProjects/Application/setup.py", line 15, in <module>
zipfile=None
File "C:\Python34\lib\distutils\core.py", line 149, in setup
dist.run_commands()
File "C:\Python34\lib\distutils\dist.py", line 955, in run_commands
self.run_command(cmd)
File "C:\Python34\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()
File "C:\Users\prest\PycharmProjects\Application\venv\lib\site-packages\py2exe\distutils_buildexe.py", line 188, in run
self._run()
File "C:\Users\prest\PycharmProjects\Application\venv\lib\site-packages\py2exe\distutils_buildexe.py", line 267, in _run
builder.analyze()
File "C:\Users\prest\PycharmProjects\Application\venv\lib\site-packages\py2exe\runtime.py", line 164, in analyze
mf.import_hook(modname)
File "C:\Users\prest\PycharmProjects\Application\venv\lib\site-packages\py2exe\mf3.py", line 120, in import_hook
module = self._gcd_import(name)
File "C:\Users\prest\PycharmProjects\Application\venv\lib\site-packages\py2exe\mf3.py", line 274, in _gcd_import
return self._find_and_load(name)
File "C:\Users\prest\PycharmProjects\Application\venv\lib\site-packages\py2exe\mf3.py", line 337, in _find_and_load
raise ImportError(name)
ImportError: scipy.linalg.*
这些是我使用的与我的应用程序相关的版本:
- Python3.4
- NumPy 1.14.5
- SciPy 1.1.0
问题: 谁能就我收到此错误的原因以及解决此问题的任何后续步骤提供任何见解?我感谢任何意见!
谢谢,
普雷斯顿
关闭 - 继续使用 PyInstaller 作为单文件可执行文件。我重新修改了脚本以解决特定的依赖项(仅使用 NumPy)。