编码问题
在终端输入chcp 65001回车
迭代溢出问题
增加迭代次数设置
在打包成exe过程中会生成spec文件,在这个文件头部添加以下内容
import sys
sys.setrecursionlimit(10000)
pkg_resources.py2_warn问题
有两种方法
(1)C:\Users\lieweiai\anaconda3\Lib\site-packages\pkg_resources把init文件中的86行__import__(‘pkg_resources.py2_warn’)注释掉
(2)在更改spec文件中的hiddenimports=[‘pkg_resources.py2_warn’]
OSError: Can’t get source for <function _rejection_sample at 0x0000027BDAD5A9D8>.
在spec文件中添加
excluded_modules = [‘torch.distributions’]
excludes=excluded_modules
解决jit调用问题
在调用jit的文件中及入口文件中添加os.environ[“PYTORCH_JIT”] = “0”
解决模型加载问题(打包成功后)
在生成的exe文件的同级目录下把jit文件拷贝进去
关于模型中包含cuda的问题
cuda是无法打包的,至少我没打包成功哈,可以在CPU上运行,把cuda去掉,这样在所有电脑上都能运行,但是速度可能变慢,毕竟没有显卡支持了,或者在需要运行的电脑上安装好cuda,这样你就可以直接打包你的模型
以下是我的spec示例文件内容
# -*- mode: python ; coding: utf-8 -*-
import sys
sys.setrecursionlimit(10000)
block_cipher = None
excluded_modules = ['torch.distributions']
a = Analysis(['D:\\py\\apploy_exe\\test.py'],
pathex=['C:\\Users\\lieweiai\\Desktop\\apploy'],
binaries=[],
datas=[],
hiddenimports=['pkg_resources.py2_warn'],
hookspath=[],
runtime_hooks=[],
excludes=excluded_modules,
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='test',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='test')