PyQt项目打包出错!(包含各种问题,折腾好几天!!!)

主要问题:

之前我打包,一直出现这个问题:

image

查了很久网页解决了,结果又有一个问题:

打开可执行文件exe,结果黑框一闪而过!(图片来不及截!)
但是没出现具体错误在哪?

解决:

经过网络查询:发现,因为我在打包的时候 输入了命令行pyinstaller -D -w myWidget.py,问题就出在“-W”!!!所以打开可执行文件的时候(此时在当前目录下cmd 然后输入生成的可执行文件myWidget.exe),没有出现我的错误。
然后,去掉-w后,我再cmd执行这个可执行文件,黑框下出现了错误原因:大概翻译过来就是缺失C:\dev\python\python37\Lib\site-packages\pyecharts....里面的东西,然后机智如我,我把C:\dev\python\python37\Lib\site-packages\pyecharts这个文件夹直接复制粘贴在dist里面,再点击myWidget.exe后成功了!

整个打包过程中注意的细节

1. pycharm中设置Python Interpreter 相关问题:1. pycharm中设置Python Interpreter 相关问题:

  • 创建工程时这样选择,就能使用 当前Python已经安装的所有 第三方包了:
    image

image

image

  • 经过下面(1)(2)(3)三个步骤后,全部点击OK 即可:

image

  • 我试了一下是可以的,但是 只是个人使用过程中摸索到的,没有见过什么教程之类的讲解指导,慎用...

  • 总结:这样做,今天(20190902)发现了一个好处:用了 "C:\Python\Python37\python.exe"的interpreter的项目,在安装 包 的时候,它也是将包安装到了"C:\Python\Python37\Lib\site-packages"中,这样其它项目再使用 "C:\Python\Python37\python.exe"的话,安装的 包 也能被使用到了。

  • 参考博客:PyCharm.创建工程时使用本地现有的Python里面的site-packages

2. 打包过程中将文件夹分级,包括引用了多个外部资源文件,和新创建了一个frozen_dir.py的文件,并把它引用在其它的py文件里,这样的好处是:使各个文件夹里面的路径都封装起来,不使用绝对路径,避免在其它电脑上运行出错(在其它电脑上可以随意放置路径)!

此frozen_dir.py主要的源码是:

import sys
import os
def app_path():
    """Returns the base application path."""
    if hasattr(sys, 'frozen'):
        # Handles PyInstaller
        return os.path.dirname(sys.executable)
    return os.path.dirname(__file__)

if __name__=='__main__':
    print(app_path())

要引用外部资源文件的地方,那个py文件要import frozen_dir,
资源路径 = app_path() + xxx/xx
比如要引用json里面的json文件:
image
image

import frozen_dir

base = frozen_dir.app_path()
json_path = '{}\json\BMAP.json'.format(base)

参考博客:手把手教你将pyqt程序打包成exe(2)

posted @ 2021-05-11 18:03  poowicat  阅读(479)  评论(0编辑  收藏  举报