pyinstaller exclude-module导致"无法执行脚本"

时间:2017-12-27 02:56:51

标签: python module pyinstaller

我在命令提示符下用我的简单脚本创建了一个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 )

我计划将来使用排除选项,所以非常感谢任何帮助!

贾里德

1 个答案:

答案 0 :(得分:1)

好的,我发现问题是什么...... 您不能在脚本中使用“import scipy”,然后尝试将其从pyinstaller中排除。

我找到了解决方法,我只在每个函数中包含模块(这些模块都保存/组织在一个文件中并用于我制作的任何程序)

现在我可以去使用:

pyinstaller --exclude-module scipy

将成功删除scipy,因为它仅列在一个函数中,该函数未用于当前脚本我试图转换为EXE

此外我现在看到python只导入一次,即使你告诉它多次导入所以这不应该减慢我的程序,即使我一直调用多次导入同一模块的函数