无法使用Pyinstaller 3.3和Python 3.6制作可执行文件

时间:2017-11-28 18:00:53

标签: windows pyinstaller python-3.6

我无法在Windows 10 64位上使用Pyinstaller 3.3和python 3.6制作.exe文件。
我知道所有依赖项都已安装,因为我可以从命令行运行我的脚本而没有任何问题 我检查了Pyinstaller页面,他们说现在支持python 3.6。

E:\Fichier\Programming\Python>pyinstaller CheckNewEpisodes.py
371 INFO: PyInstaller: 3.3
372 INFO: Python: 3.6.1
372 INFO: Platform: Windows-10-10.0.15063-SP0
374 INFO: wrote E:\Fichier\Programming\Python\CheckNewEpisodes.spec
376 INFO: UPX is not available.
377 INFO: Extending PYTHONPATH with paths
['E:\\Fichier\\Programming\\Python', 'E:\\Fichier\\Programming\\Python']
377 INFO: checking Analysis
378 INFO: Building Analysis because out00-Analysis.toc is non existent
378 INFO: Initializing module dependency graph...
380 INFO: Initializing module graph hooks...
382 INFO: Analyzing base_library.zip ...
Traceback (most recent call last):
  File "<string>", line 41, in <module>
  File "<string>", line 13, in walk_packages
  File "c:\users\del\appdata\local\programs\python\python36\lib\pkgutil.py", line 127, in iter_modules
    for name, ispkg in iter_importer_modules(i, prefix):
  File "c:\users\del\appdata\local\programs\python\python36\lib\pkgutil.py", line 146, in _iter_file_finder_modules
    import inspect
  File "c:\users\del\appdata\local\programs\python\python36\lib\inspect.py", line 40, in <module>
    import linecache
  File "c:\users\del\appdata\local\programs\python\python36\lib\linecache.py", line 11, in <module>
    import tokenize
  File "c:\users\del\appdata\local\programs\python\python36\lib\tokenize.py", line 33, in <module>
    import re
  File "c:\users\del\appdata\local\programs\python\python36\lib\re.py", line 142, in <module>
    class RegexFlag(enum.IntFlag):
AttributeError: module 'enum' has no attribute 'IntFlag'
Traceback (most recent call last):
  File "<string>", line 41, in <module>
  File "<string>", line 13, in walk_packages
  File "c:\users\del\appdata\local\programs\python\python36\lib\pkgutil.py", line 127, in iter_modules
    for name, ispkg in iter_importer_modules(i, prefix):
  File "c:\users\del\appdata\local\programs\python\python36\lib\pkgutil.py", line 146, in _iter_file_finder_modules
    import inspect
  File "c:\users\del\appdata\local\programs\python\python36\lib\inspect.py", line 40, in <module>
    import linecache
  File "c:\users\del\appdata\local\programs\python\python36\lib\linecache.py", line 11, in <module>
    import tokenize
  File "c:\users\del\appdata\local\programs\python\python36\lib\tokenize.py", line 33, in <module>
    import re
  File "c:\users\del\appdata\local\programs\python\python36\lib\re.py", line 142, in <module>
    class RegexFlag(enum.IntFlag):
AttributeError: module 'enum' has no attribute 'IntFlag'
4277 INFO: running Analysis out00-Analysis.toc
4280 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable
  required by c:\users\del\appdata\local\programs\python\python36\python.exe
4346 WARNING: lib not found: api-ms-win-crt-locale-l1-1-0.dll dependency of c:\users\del\appdata\local\programs\python\python36\python.exe
5519 WARNING: lib not found: api-ms-win-crt-runtime-l1-1-0.dll dependency of c:\users\del\appdata\local\programs\python\python36\VCRUNTIME140.dll

5767 WARNING: lib not found: api-ms-win-crt-stdio-l1-1-0.dll dependency of c:\users\del\appdata\local\programs\python\python36\VCRUNTIME140.dll
5773 INFO: Caching module hooks...
5781 INFO: Analyzing E:\Fichier\Programming\Python\CheckNewEpisodes.py
6041 INFO: Processing pre-safe import module hook   urllib3.packages.six.moves
Traceback (most recent call last):
  File "<string>", line 2, in <module>
  File "c:\users\del\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\hooks\pre_safe_import_module\hook-urllib3.packages.six.moves.py", line 31, in pre_safe_import_module
    for real_module_name, six_module_name in real_to_six_module_name.items():
AttributeError: 'str' object has no attribute 'items'

我不得不截断错误日志,希望这足以让我们了解问题所在。

2 个答案:

答案 0 :(得分:1)

您需要确保您的脚本使用的任何文件/数据也正在使用exe打包,否则当pyinstaller在构建脚本时尝试验证您的脚本是否正常工作时,它将导致错误,因为脚本将无法正常工作。

如果您可以发布一些使用“项目”的代码,那么我们可以尝试帮助您弄清楚您缺少的内容。

同时确保pyinstaller包含在spec文件中包含它们所需的任何依赖项。你可以像展示HERE

那样做

答案 1 :(得分:0)

我解决了bug,而pyinstaller非常棒! 首先我删除了enum34模块,因为它导致兼容性问题,当我想调用enum.py时,pyinstaller正在调用它:

pip uninstall enum34  

然后我在制作可执行文件时添加--debug,这样我就可以看到错误了

pyinstaller -F --debug scriptname  

然后我一个接一个地解决这些错误,大部分时间都是缺少模块,这是我导入的模块秘密导入的,例如使用matplotlib我必须安装PyQt5和PySide等等