请问下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 11:26 编辑
首先程序的启动入口需要与你截图中的文件夹同级,要不然打包后会出问题。打包时一般只需要打包入口py文件,其他引用到的py文件pyinstaller会自动搜索
其次,如果你的程序中有引用路径,确保它是相对路径,否则打包后会出问题
建议你先到pyinstaller官网熟悉一下路径方面的教程,比如os.getcwd()、__file__、sys.executable等路径的差异(未打包、打包成单文件、打包成文件夹,它们的值都有可能出现不一样的结果),如果你通过他们获取相对路径的起始值,一定要到官网看一下它们的区别,八成打包后无法运行的原因都是这个
至于其他的资源文件,比如配置文件等,pyinstaller有参数可以将它们打包进去(你搜一下,我忘了)
对于像你这样结构的程序,建议打包成文件夹的形式,可以避免很多问题。如果需要发送,可以用压缩软件压缩了再发送
最后自荐一下自己写的pyinstaller打包工具,可以省很多功夫:AwesomePyKit,这个AwesomePyKit也是差不多和你程序一样的结构,它的exe版就是用自己打包自己的{:10_250:} 本帖最后由 阿奇_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的路径了。
https://blog.csdn.net/cainiao_python/article/details/108543978 hrpzcf 发表于 2021-8-25 11:21
首先程序的启动入口需要与你截图中的文件夹同级,要不然打包后会出问题。打包时一般只需要打包入口py文件, ...
感谢,使用AwesomePyKit已成功打包并正常运行
页:
[1]