【发布时间】:2019-09-25 18:47:15
【问题描述】:
我有这个 Python 脚本,我想用 Pyinstaller 将其转换为 EXE 文件。
这是我的规范文件:
# -*- mode: python ; coding: utf-8 -*-
# work-around for https://github.com/pyinstaller/pyinstaller/issues/4064
import distutils
if distutils.distutils_path.endswith('__init__.py'):
distutils.distutils_path = os.path.dirname(distutils.distutils_path)
block_cipher = None
a = Analysis(['hello-world.py'],
pathex=['C:\\Users\\Testuser\\workspace\\hello-world'],
binaries=[],
datas=[ ('lib/*', '.') ],
hiddenimports=[
'distutils',
'scipy._lib.messagestream',
'sklearn.neighbors.typedefs',
'sklearn.neighbors.quad_tree',
'sklearn.tree',
'sklearn.tree._utils'
],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='hello-world',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='hello-world')
但在 Win 10 64 位虚拟机中运行时出现此错误:
Traceback (most recent call last):
File "hello-world.py", line 11, in <module>
File "c:\users\testuser\workspace\hello-world\.venv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
File "site-packages\sklearn\__init__.py", line 76, in <module>
File "c:\users\testuser\workspace\hello-world\.venv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
File "site-packages\sklearn\base.py", line 16, in <module>
File "c:\users\testuser\workspace\hello-world\.venv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
File "site-packages\sklearn\utils\__init__.py", line 13, in <module>
File "c:\users\testuser\workspace\hello-world\.venv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
File "site-packages\scipy\sparse\__init__.py", line 230, in <module>
File "c:\users\testuser\workspace\hello-world\.venv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
File "site-packages\scipy\sparse\csr.py", line 13, in <module>
ImportError: DLL load failed: The specified module could not be found.
EXE 在我构建它的机器上运行良好。将文件夹复制到 VM 中会导致上述错误。我不确定错误指的是哪个 DLL。
我猜它与错误中的路径有关,因为 VM 中不存在 c:\users\testuser\workspace\hello-world。我在这里缺少 Pyinstaller 选项吗?生成的 EXE 是否应该引用我的旧路径?
【问题讨论】:
标签: python pyinstaller