前言
在使用python编写了一个小程序之后,希望能够将其打包为一个可执行文件,如exe格式,这样就能够在其他电脑上安装使用,因此,打包python项目是一个普遍的需求。
平台:windows10
工具:visual studio code
语言:python
库:pyinstaller
第三方工具:虚拟文件打包工具Enigma Virtual Box
pip install pyinstaller
pyinstaller最简单的用法就是:
pyinstaller xxx.py
在你当前工作的项目根目录下,进入终端命令行,输入以上指令,其中xxx是你得python主项目名称。
正常情况下,pyinstaller此时会自动执行打包程序,但也可能会遇到错误:
The 'pathlib' package is an obsolete backport of a standard library package and is incompatible with PyInstaller. Please remove this package (located in E:\Program Files\Python312\Lib\site-packages) using
"E:\Program Files\Python312\python.exe" -m pip uninstall pathlib
then try again.
这个错误表示,如果你安装了pathlib,你需要卸载它。
pip uninstall pathlib
等待卸载完成,再次使用pyinstaller命令即可。
当打包完成后,会在当前项目文件下生成两个文件夹:
一个是build,一个是dist,其中exe文件就在dist文件夹下:
正常情况下,此时如果点击exe文件,应该能直接启动程序。但有时会遇到问题,比如路径问题。
我们在编程时,有时会为了方便,对于程序里用到的其他资源文件如图片、文本或者配置性文件,直接使用了相对路径,但一旦打包之后,程序启动时的终端可能就完全不一样了,此时相对路径很可能就报错。
那么此时应该如何处理呢?
我们可以在编写程序时,对于涉及到的其他资源文件的路径,进行处理,比如:
if getattr(sys,'frozen',False):
path1=os.path.dirname(os.path.abspath(sys.executable))
elif __file__:
path1=os.path.dirname(os.path.abspath(__file__))
#print(path1)
self.path1=path1
注:这段代码来自网络,主要是处理程序的路径问题,目的是当程序位于不同的文件夹或者终端时,可以先获取自身的根路径,然后根据此路径来适配程序的其他资源文件的路径。
self.qss_style_file=self.path1+'\qssfile\qss_main_style.qss'
比如你有1个qss文件,那么就可以使用动态的根路径加上相对路径,这样,无论程序的路径是什么,qss文件的路径都可以适应。
最后,要说明的是,本文是个人在使用pyinstaller打包python项目为exe格式过程的一个记录,如果你正好有这样的问题,能帮到你更好,但主要是便于本人以后遇到类似问题,有一个参考记录。