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通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核