为什么python使用Pyinstaller打包成exe,只有spec文件?

问题描述

使用Pyinstaller将python脚本文件打包成exe,但是生成的文件夹里没有exe文件
打包使用的命令是
pyinstaller -F -w test.py

报错信息

Traceback (most recent call last):
  File "D:\Anaconda3\envs\guanji\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec)
  File "D:\Anaconda3\envs\guanji\lib\runpy.py", line 85, in _run_code 
   exec(code, run_globals)
  File "D:\Anaconda3\envs\guanji\Scripts\pyinstaller.exe\__main__.py", line 7, in <module>
  File "D:\Anaconda3\envs\guanji\lib\site-packages\PyInstaller\__main__.py", line 194, in _console_script_run  run()
  File "D:\Anaconda3\envs\guanji\lib\site-packages\PyInstaller\__main__.py", line 180, in run  run_build(pyi_config, spec_file, **vars(args))
  File "D:\Anaconda3\envs\guanji\lib\site-packages\PyInstaller\__main__.py", line 61, in run_build
  PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "D:\Anaconda3\envs\guanji\lib\site-packages\PyInstaller\building\build_main.py", line 1019, in main
   build(specfile, distpath, workpath, clean_build)
  File "D:\Anaconda3\envs\guanji\lib\site-packages\PyInstaller\building\build_main.py", line 944, in build
   exec(code, spec_namespace)
  File "D:\programing\python\guanji.spec", line 20, in <module>
   noarchive=False,
  File "D:\Anaconda3\envs\guanji\lib\site-packages\PyInstaller\building\build_main.py", line 429, in __init__
   self.__postinit__()
  File "D:\Anaconda3\envs\guanji\lib\site-packages\PyInstaller\building\datastruct.py", line 184, in __postinit__
   self.assemble()
  File "D:\Anaconda3\envs\guanji\lib\site-packages\PyInstaller\building\build_main.py", line 590, in assemble
   priority_scripts.append(self.graph.add_script(script))
  File "D:\Anaconda3\envs\guanji\lib\site-packages\PyInstaller\depend\analysis.py", line 268, in add_script
   self._top_script_node = super().add_script(pathname)
  File "D:\Anaconda3\envs\guanji\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1345, in add_script
   contents = fp.read() + '\n'
  File "D:\Anaconda3\envs\guanji\lib\codecs.py", line 322, in decode
   (result, consumed) = self._buffer_decode(data, self.errors, final)
**UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbd in position 4: invalid start byte**

问题出现的环境背景

使用anaconda创建了一个只包含需要库的环境,python版本是3.7,打包的文件编码方式是GB 2312

尝试过的解决方法

1.将文件在python的IDE中打开,在最上边,加注一行代码 # -- coding: utf-8 --
2.将python包目录下\PyInstaller\compat.py文件中
out = out.decode(encoding)
修改为:
out = out.decode(encoding, errors='ignore')
3.在打包的命令行中先输入chcp 65001 然后再输入打包命令。

阅读 1.5k
1 个回答
新手上路,请多包涵

可以试下nuitka打包

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题