盘点在pyinstaller打包的时候遇到的一些坑

1、当遇到编码问题的时候要怎么解决

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dWbl6IDm-1606805468621)(https://cdn.jsdelivr.net/gh/13060923171/images@main/img/image-20201201090248717.png)]

在cmd窗口输入chcp 65001然后回车

image-20201201090532533

这时编码问题就可以全部解决了

2、python maximum recursion depth exceeded

出现这个问题的时候,首先先pyinstaller -F main01.py

然后在自动生成的那个spec文件里面的第二行添加这两行代码

image-20201201091108491

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

上面方法不成功可以试试这个方法

深度神经网络多.py文件

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版本

Logo

一站式虚拟内容创作平台,激发创意,赋能创作,进入R空间,遇见同道,让优质作品闪耀发光。​

更多推荐