四君子 发表于 2021-8-25 08:58:32

请问下Python项目打包为exe

本帖最后由 四君子 于 2021-8-25 09:49 编辑

以下为项目目录结构:
common存放公共模块,config为配置文件,img是程序图标,ui.py是主程序,请问下如何把整个项目打包为exe?
https://i.loli.net/2021/08/24/DL2WcNaS6liC49H.png

hrpzcf 发表于 2021-8-25 08:58:33

本帖最后由 hrpzcf 于 2021-8-25 11:26 编辑

首先程序的启动入口需要与你截图中的文件夹同级,要不然打包后会出问题。打包时一般只需要打包入口py文件,其他引用到的py文件pyinstaller会自动搜索

其次,如果你的程序中有引用路径,确保它是相对路径,否则打包后会出问题

建议你先到pyinstaller官网熟悉一下路径方面的教程,比如os.getcwd()、__file__、sys.executable等路径的差异(未打包、打包成单文件、打包成文件夹,它们的值都有可能出现不一样的结果),如果你通过他们获取相对路径的起始值,一定要到官网看一下它们的区别,八成打包后无法运行的原因都是这个

至于其他的资源文件,比如配置文件等,pyinstaller有参数可以将它们打包进去(你搜一下,我忘了)

对于像你这样结构的程序,建议打包成文件夹的形式,可以避免很多问题。如果需要发送,可以用压缩软件压缩了再发送

最后自荐一下自己写的pyinstaller打包工具,可以省很多功夫:AwesomePyKit,这个AwesomePyKit也是差不多和你程序一样的结构,它的exe版就是用自己打包自己的{:10_250:}

阿奇_o 发表于 2021-8-25 10:25:54

本帖最后由 阿奇_o 于 2021-8-25 10:28 编辑

你项目入口所在的那个py文件,用pyinstaller打包成一个 pyinstaller.exe -F -w.\myApp.py
生成的dist目录就相当于你的应用的"当前工作目录",把需要的资源和文件,复制到dist里即可。
双击打包后的 myApp.exe (假设是这个名字)就可以运行起来了。

其他的.py文件,如ui.py, 你只要在 myApp.py里import ui ,在打包时,它会自动一起打包这些依赖的模块。

排错:若遇到路径问题,修改myApp.py 使用 '.' 或 os.getcwd() 再os.path.join() 拼接出正确的路径。
你用绝对路径也行,但要考虑pyinstaller后的"当前工作目录"的不同,变成dist的路径了。

不大不小甲鱼 发表于 2021-8-25 11:42:36

https://blog.csdn.net/cainiao_python/article/details/108543978

四君子 发表于 2021-8-25 13:05:32

hrpzcf 发表于 2021-8-25 11:21
首先程序的启动入口需要与你截图中的文件夹同级,要不然打包后会出问题。打包时一般只需要打包入口py文件, ...

感谢,使用AwesomePyKit已成功打包并正常运行
页: [1]
查看完整版本: 请问下Python项目打包为exe