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

插入的位置
插入位置
再次运行

pyinstaller -F --noupx xxx.spec
  • 生成的exe报错
    在这里插入图片描述
    在这里插入图片描述
    解决方法
    使用如下命令时不会报错,但生成的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库官方文档部分翻译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值