python用pyinstaller生成exe时报错 TypeError: an integer is required (got type bytes)

python用pyinstaller生成exe时报错:

126 INFO: PyInstaller: 3.5
126 INFO: Python: 3.8.0
126 INFO: Platform: Windows-10-10.0.15063-SP0
128 INFO: wrote C:\report\ToExe\pywin32-217\pywin32-217\TestHandler.spec
130 INFO: UPX is not available.
133 INFO: Extending PYTHONPATH with paths
[‘C:\report\ToExe\pywin32-217\pywin32-217’,
‘C:\report\ToExe\pywin32-217\pywin32-217’]
133 INFO: checking Analysis
199 INFO: checking PYZ
199 INFO: Building PYZ because PYZ-00.toc is non existent
201 INFO: Building PYZ (ZlibArchive) C:\report\ToExe\pywin32-217\pywin32-217\build\TestHandler\PYZ-00.pyz
Traceback (most recent call last):
File “c:\python\python38-32\lib\runpy.py”, line 192, in run_module_as_main
return run_code(code, main_globals, None,
File “c:\python\python38-32\lib\runpy.py”, line 85, in run_code
exec(code, run_globals)
File "C:\Python\Python38-32\Scripts\pyinstaller.exe_main
.py", line 7, in
File "c:\python\python38-32\lib\site-packages\PyInstaller_main
.py", line 111, in run
run_build(pyi_config, spec_file, **vars(args))
File "c:\python\python38-32\lib\site-packages\PyInstaller_main
.py", line 63, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File “c:\python\python38-32\lib\site-packages\PyInstaller\building\build_main.py”, line 844, in main
build(specfile, kw.get(‘distpath’), kw.get(‘workpath’), kw.get(‘clean_build’))
File “c:\python\python38-32\lib\site-packages\PyInstaller\building\build_main.py”, line 791, in build
exec(code, spec_namespace)
File “C:\report\ToExe\pywin32-217\pywin32-217\TestHandler.spec”, line 18, in
pyz = PYZ(a.pure, a.zipped_data,
File “c:\python\python38-32\lib\site-packages\PyInstaller\building\api.py”, line 98, in init
self.postinit()
File “c:\python\python38-32\lib\site-packages\PyInstaller\building\datastruct.py”, line 158, in postinit
self.assemble()
File “c:\python\python38-32\lib\site-packages\PyInstaller\building\api.py”, line 128, in assemble
self.code_dict = {
File “c:\python\python38-32\lib\site-packages\PyInstaller\building\api.py”, line 129, in
key: strip_paths_in_code(code)
File “c:\python\python38-32\lib\site-packages\PyInstaller\building\utils.py”, line 652, in strip_paths_in_code
consts = tuple(
File “c:\python\python38-32\lib\site-packages\PyInstaller\building\utils.py”, line 653, in
strip_paths_in_code(const_co, new_filename)
File “c:\python\python38-32\lib\site-packages\PyInstaller\building\utils.py”, line 660, in strip_paths_in_code
return code_func(co.co_argcount, co.co_kwonlyargcount, co.co_nlocals, co.co_stacksize,
TypeError: an integer is required (got type bytes)

解决办法:报错前的pyinstaller是用 pip install pyinstaller 来安装的,改成用 pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz 再安装一次

其它说明:如果电脑中同时存在多个版本的python可能会导致各种问题(比如 “failed to execute script xxx” 、“failed to create process”),如果不是特别熟悉使用python只是为了偶尔使用的话最好把以前安装的多余的python版本删掉或全部删掉重新安装(到官网下载最新的安装程序,网上说32位的兼容性比较好),安装步骤可参考:https://blog.csdn.net/weixin_40844416/article/details/80889165


--后续补充(填坑):----------------------------------------------------
用这种方法生成的exe在某些电脑上运行没问题,但到了某些电脑上就报failed to execute script pyi_rth_multiprocessing 等错误,最后解决方法是重新安装python3.5 + 用pip install pyinstaller来安装解决


--再次更新(2022.3.24):---------------------------------------------
先说结论,python版本使用3.6(我用的是3.6.8的安装包)
由于换了电脑,发现python3.5在某个过程中通不过,所以想着可以试试python最新的版本如3.10,但使用pyinstaller打包后在自己电脑能用,在目标电脑就提示找不到api-ms-win-core-path-l1-1-0.dll,而且按照网上的办法去下载一起打包依然不行(不再提示找不到,而是运行程序没有任何反应),后面尝试在目标电脑上安装python环境等时才发现3.10只支持win8以上的系统了,所以只能回退python的版本,3.8还是提示pyi_rth_multiprocessing,网上说要升级win7 sp1,觉得还是麻烦,最后根据一个英文帖子说的退到3.6,终于可以了

  • 13
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 47
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 47
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值