python源码保护pyinstaller 打包exe运行成功 pytorch环境

一 .py文件编译成二进制.pyd文件

1.环境准备

①Anaconda 3.5,PyTorch环境搭建
转自: PyTorch环境搭建.
②可能遇到的问题解决:anaconda打不开

2.测试

进入cython_test路径下,终端运行命令

python setup.py build_ext --inplace

删除test.py,测试结果

python use_test.py

测试结果

windows打包exe教程直接看第二部分↓

二.windows下使用pyinstaller 打包成exe

1.环境准备

  • pyinstaller安装
conda install pyinstaller
  • 打包exe
pyinstaller -F xxx.py

2.出现报错相应的解决方法

  • RecursionError: maximum recursion depth exceeded
    解决方法来源
    pyinstaller 之后会生成一个和xxx.py文件对一个的 xxx.spec 文件
    打开xxx.spec文件,在行首导入sys包,然后设置一下递归调用的限制次数,可以尽量大一点,我这里设置100万次后就没有报错了
# -*- mode: python ; coding: utf-8 -*-
import sys
sys.setrecursionlimit(100000)

重新打包xxx.spec

pyinstaller -F --noupx xxx.spec
  • UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xce in position 122: invalid continuation byte
    解决方法来源
    解决办法:在你打包的命令行中先输入chcp 65001 然后再输入打包命令。
  • WARNING: file already exists but should not: C:\Users\ADMINI~1\AppData\Local\Temp_MEI130922\torch_C.cp38-win_amd64.pyd
    转自
    解决方法:
    pyinstaller 之后会生成一个和xxx.py文件对一个的 xxx.spec 文件
    打开xxx.spec文件,加入以下代码
for d in a.datas:
	if '_C.cp38-win_amd64.pyd' in d[0]:
		a.datas.remove(d)
		break

插入的位置
python源码保护pyinstaller 打包exe运行成功 pytorch环境_第1张图片
再次运行

pyinstaller -F --noupx xxx.spec
  • 生成的exe报错
    python源码保护pyinstaller 打包exe运行成功 pytorch环境_第2张图片
    python源码保护pyinstaller 打包exe运行成功 pytorch环境_第3张图片
    解决方法
    使用如下命令时不会报错,但生成的exe稍大一些
pyinstaller -F --noupx xxx.py
  • 生成的exe报错Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll
    转自
    解决方法:
    C:\Users\用户名\Anaconda3\Library\bin 文件夹中 mkl_ 开头的文件和libiomp5md.dll拷贝到 python 的根目录下(与 python.exe 同目录)
  • 其他问题
    打包可能会出现图片等资源丢失,将缺少的文件放置到打包后的同级目录下即可。

3.参考文章

pyinstaller打包exe详细教程及命令参考
pyinstaller 完美解决打包图片等资源的问题
Pyinstaller库官方文档部分翻译

你可能感兴趣的:(编程技巧汇总,pytorch,深度学习,python,pyinstaller)