无法使用 Pyinstaller 3.3 和 Python 3.6 生成可执行文件
Can't make executable file with Pyinstaller 3.3 and 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'
我不得不整理运行错误日志,希望这足以让您了解问题出在哪里。
你需要确保你的脚本使用的任何 files/data 也被打包在 exe 中,否则当 pyinstaller 在构建它时试图验证你的脚本是否工作时,它会导致错误,因为脚本将不起作用。
如果您可以 post 一些使用 "items" 的代码,那么也许我们可以尝试帮助您找出遗漏的内容。
同时确保 pyinstaller 通过将它们包含在规范文件中来包含所需的任何依赖项。你可以这样做 HERE
我解决了错误,pyinstaller 很棒!!
首先,我删除了 enum34 模块,因为它导致了兼容性问题,当我只想调用 enum.py:
时,pyinstaller 正在调用它
pip uninstall enum34
然后我在制作可执行文件时添加 --debug 这样我就可以看到哪里出了问题
pyinstaller -F --debug scriptname
然后我一个一个解决bug,大部分时候是缺少模块,是我导入的模块偷偷导入的,例如matplotlib我必须安装PyQt5和PySide等
我无法在 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'
我不得不整理运行错误日志,希望这足以让您了解问题出在哪里。
你需要确保你的脚本使用的任何 files/data 也被打包在 exe 中,否则当 pyinstaller 在构建它时试图验证你的脚本是否工作时,它会导致错误,因为脚本将不起作用。
如果您可以 post 一些使用 "items" 的代码,那么也许我们可以尝试帮助您找出遗漏的内容。
同时确保 pyinstaller 通过将它们包含在规范文件中来包含所需的任何依赖项。你可以这样做 HERE
我解决了错误,pyinstaller 很棒!!
首先,我删除了 enum34 模块,因为它导致了兼容性问题,当我只想调用 enum.py:
pip uninstall enum34
然后我在制作可执行文件时添加 --debug 这样我就可以看到哪里出了问题
pyinstaller -F --debug scriptname
然后我一个一个解决bug,大部分时候是缺少模块,是我导入的模块偷偷导入的,例如matplotlib我必须安装PyQt5和PySide等