我在命令提示符下用我的简单脚本创建了一个exe: pyinstaller --onefile --exclude-module scipy myscript.py
当我打开.exe时,我收到一条消息,说“"无法运行myscript.exe脚本"
但是当我不使用exclude-module时,程序运行得非常好。 无论是否有scipy,它都可以完美地运行(我只是添加它来学习exclude-module命令)
这是我的.spec文件,由pysinstaller生成:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['Simpletkinter.py'],
pathex=['C:\\Program Files (x86)\\Python36-32\\Scripts'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=['scipy'],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='Simpletkinter',
debug=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=False )
我计划将来使用排除选项,所以非常感谢任何帮助!
贾里德
答案 0 :(得分:1)
好的,我发现问题是什么...... 您不能在脚本中使用“import scipy”,然后尝试将其从pyinstaller中排除。
我找到了解决方法,我只在每个函数中包含模块(这些模块都保存/组织在一个文件中并用于我制作的任何程序)
现在我可以去使用:
pyinstaller --exclude-module scipy
将成功删除scipy,因为它仅列在一个函数中,该函数未用于当前脚本我试图转换为EXE
此外我现在看到python只导入一次,即使你告诉它多次导入所以这不应该减慢我的程序,即使我一直调用多次导入同一模块的函数