python文件打包-pyinstaller 常见问题

2024-08-23 13:48

本文主要是介绍python文件打包-pyinstaller 常见问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

python project 编译Linux的可执行版本

                                        --2017.11.18
  • 1
  • 2

1.使用工具 
pyinstaller

2.安装方法 
(1)可以直接去官网下载:http://www.pyinstaller.org/downloads.html 
(2)或者pip方式下载:pip install pyinstaller

3.编译方法 
(1)编译main.py 
pyinstaller main.py (main.py是需要编译的主程序文件,后文中main同此) 
注:编译成功后会产生两个文件夹:build和dist,可执行的版本就在dist中。 
(2)运行程序 
在/dist/main/下运行输入 ./main 就可以运行

4.遇到的问题及解决方案 
(1) 与‘ImportError: No module named _cwt’相关的问题 
‘No module named xxx’问题一般是某个包没有被打包编译,解决办法是修改main.spec文件中的hiddenimports(main.spec文件是pyinstaller main.py编译后生成的),添加上该文件的具体路径。‘_cwt’这个问题出现的比较多,应该是与python有关,不是与项目中使用的包相关。google一下就能够找到解决办法,具体解决方案如下: 
修改前: 
hiddenimports=[], 
修改后: 
hiddenimports=[‘pywt._extensions._cwt’] 
完成之后,再重新编译,运行下面的命令 
pyinstaller main.spec 
后面遇到了类似的问题:‘ImportError: No module named _THCUNN’,这个问题是与该项目具体使用的包有关,因此网上没有找到相关的答案。主要解决办法是找到名为‘_THCUNN’的文件,通过搜索发现确实存在_THCUNN.so的文件,确定该文件路径为torch/_thnn/_THCUNN.so。因此在hiddenimports中添加的东西为:torch._thnn._THCUNN。之后别忘了重新编译:pyinstaller main.spec。 
因此,遇到‘No module named xxx’问题时,修改hiddenimports是一个可以参考的解决思路。当然,并不确定是否所有类似的问题都能这样解决,这里只是提供一个解决思路。

(2) 与RuntimeError: Unable to find torch_shm_manager at /home/imaging/release_main/dist/- 
main/torch/lib/torch_shm_manager相关问题 
这个问题比较清楚,就是没有找到某个文件。解决这个问题的方法也很直接,就是将需要的文件配置到指定的路径。将torch包复制到/dist/main/路径下,再次运行就可以了。 
注:或许可以通过设置相关参数的方式将需要的torch包导入,但是这方面的信息比较少,没有查找到。 
附:如果需要debug,方便解决问题,可以将main.spec中的debug属性。 
debug=False 改为 debug=True 
后续遇到了类似的问题: 
tensorflow/contrib/util/tensorflow/contrib/framework/python/ops/_checkpoint_ops.so: cannot open shared object file: No such file or directory 
用同样的方法即可解决。

(3)特殊问题: 
Exception: Versioning for this project requires either an sdist tarball, or access to an upstream git repository. It’s also possible that there is a mismatch between the package name in setup.cfg and the argument given to pbr.version.VersionInfo. Project name mock was given, but was not able to be found. 
[2103] Failed to execute script segm_main 
该问题好像不具有一般性,没有发现一些规律,只是找到了解决方案,如下: 
文件的首行插入 
import os 
#export pbr version for tensorflow user 
os.environ["PBR_VERSION"]='3.0.1' #要去查询自己的版本

参考资料: 
https://github.com/pyinstaller/pyinstaller/issues/2883

(4)补充说明 
1)上述所有的解决过程都是针对linux下的python projects,对于windows 下的python projects是否相同,并不确定,但可以参考解决思路。 
2)pyinstaller编译后,有些库可能由于不同机器下版本不同,需要重新导入。 

3)实际上,pyinstaller的使用并不多,因此网上的资源比较少,遇到问题google上不容易找到解决方案,可以去pyinstaller的github,会有一些问题的解决方案,也可以发帖询问,在这里寻找答案更加具有针对性,具体网址:https://github.com/pyinstaller/pyinstaller/issues

url:https://blog.csdn.net/laocaibcc229/article/details/78570017

这篇关于python文件打包-pyinstaller 常见问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099555

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

springboot3打包成war包,用tomcat8启动

1、在pom中,将打包类型改为war <packaging>war</packaging> 2、pom中排除SpringBoot内置的Tomcat容器并添加Tomcat依赖,用于编译和测试,         *依赖时一定设置 scope 为 provided (相当于 tomcat 依赖只在本地运行和测试的时候有效,         打包的时候会排除这个依赖)<scope>provided

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

java面试常见问题之Hibernate总结

1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象。) Ø  OID检索(按照对象的OID来检索对象。) Ø  HQL检索(使用面向对象的HQL查询语言。) Ø  QBC检索(使用QBC(Qurey By Criteria)API来检索对象。 QBC/QBE离线/在线) Ø  本地SQL检索(使用本地数据库的SQL查询语句。) 包括Hibern

Python QT实现A-star寻路算法

目录 1、界面使用方法 2、注意事项 3、补充说明 用Qt5搭建一个图形化测试寻路算法的测试环境。 1、界面使用方法 设定起点: 鼠标左键双击,设定红色的起点。左键双击设定起点,用红色标记。 设定终点: 鼠标右键双击,设定蓝色的终点。右键双击设定终点,用蓝色标记。 设置障碍点: 鼠标左键或者右键按着不放,拖动可以设置黑色的障碍点。按住左键或右键并拖动,设置一系列黑色障碍点