盘点在pyinstaller打包的时候遇到的一些坑
盘点在pyinstaller打包的时候遇到的一些坑1、当遇到编码问题的时候要怎么解决[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dWbl6IDm-1606805468621)(https://cdn.jsdelivr.net/gh/13060923171/images@main/img/image-20201201090248717.png)]在cmd窗口输入ch
盘点在pyinstaller打包的时候遇到的一些坑
1、当遇到编码问题的时候要怎么解决
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dWbl6IDm-1606805468621)(https://cdn.jsdelivr.net/gh/13060923171/images@main/img/image-20201201090248717.png)]
在cmd窗口输入chcp 65001然后回车

这时编码问题就可以全部解决了
2、python maximum recursion depth exceeded
出现这个问题的时候,首先先pyinstaller -F main01.py
然后在自动生成的那个spec文件里面的第二行添加这两行代码

import sys
sys.setrecursionlimit(100000)
然后再cmd里面 pyinstaller xxx.spec
3、No module named dns这种错误
pyinstaller -F main01.py -p main02.py -p video.py -p datasets.py -p functions.py -p infenerce_class.py -p nets.py -p trainer.py -p hook-eventlet.py --hidden-import=eventlet.hubs.epolls --hidden-import=eventlet.hubs.kqueue --hidden-import=eventlet.hubs.selects --hidden-import=dns --hidden-import=dns.dnssec --hidden-import=dns.e164 --hidden-import=dns.edns --hidden-import=dns.entropy --hidden-import=dns.exception --hidden-import=dns.flags --hidden-import=dns.grange --hidden-import=dns.hash --hidden-import=dns.inet --hidden-import=dns.ipv4 --hidden-import=dns.ipv6 --hidden-import=dns.message --hidden-import=dns.name --hidden-import=dns.namedict --hidden-import=dns.node --hidden-import=dns.opcode --hidden-import=dns.query --hidden-import=dns.rcode --hidden-import=dns.rdata --hidden-import=dns.rdataclass --hidden-import=dns.rdataset --hidden-import=dns.rdatatype --hidden-import=dns.renderer --hidden-import=dns.resolver --hidden-import=dns.reversename --hidden-import=dns.rrset --hidden-import=dns.set --hidden-import=dns.tokenizer --hidden-import=dns.tsig --hidden-import=dns.tsigkeyring --hidden-import=dns.ttl --hidden-import=dns.update --hidden-import=dns.version --hidden-import=dns.wiredata --hidden-import=dns.zone --hidden-import=av --hidden-import=fvcore --hidden-import=torch --hidden-import=torchvision --hidden-import=detectron2
4、No module named eventlet这种错误
pyinstaller -F main01.py --hidden-import=eventlet.hubs.epolls --hidden-import=eventlet.hubs.kqueue --hidden-import=eventlet.hubs.selects
5、RuntimeError: Could not find the matplotlib data files
当出现这种问题的时候,说明你的matplotlib版本太高
一般建议直接重新安装低版本直接解决就好了
pip uninstall matplotlib
pip install matplotlib==3.1.1
然后再
pyinstaller -F XXX.py
找到.spec文件
修改 hiddenimports=[‘matplotlib’],
再执行pyinstaller -F XXX.spec
6、怎么打包多个py文件
pyinstaller [主文件] -p [其他文件1] -p [其他文件2] --hidden-import [自建模块1] --hidden-import [自建模块2]
pyinstaller -F entrance.py -p clip.py -p data.py --hidden-import clip --hidden-import data
7、<function _rejection_sample at 0x0000021DDEF9ED08>. TorchScript requires source access in order to carry out compilation, make sure original .py files are available.
或者出现WARNING: file already exists but should not: C:\Users\workAI\AppData\Local\Temp_MEI132522\torch_C.cp37-win_amd64.pyd这些问题参照一下的即可
# -*- mode: python ; coding: utf-8 -*-
import sys
sys.setrecursionlimit(100000)
block_cipher = None
excluded_modules = ['torch.distributions'] # <<< ADD THIS LINE
a = Analysis(['C:/your/path/here'],
pathex=['C:\\your\\path\\here'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=excluded_modules, # <<< CHANGE THIS LINE
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
for d in a.datas:
if '_C.cp36-win_amd64.pyd' in d[0]:
a.datas.remove(d)
break
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
# remaining code omitted for brevity
之后再运行:
pyinstaller -F xxx.spec
pip uninstall torchvision #卸载了0.4版本
pip install torchvision==0.2.2.post3 #安装0.2版本
1018.2118.3001.4449)
pip uninstall torchvision #卸载了0.4版本
pip install torchvision==0.2.2.post3 #安装0.2版本
更多推荐

所有评论(0)