mengdeer589
mengdeer589
我最近在在打包pyqt5的qwebengine时,也遇到了中文路径问题。路径信息可以通过QLibraryInfo.location(QLibraryInfo.PluginsPath)查询,包括插件,翻译文件,资源文件呢,未打包情况下,这些路径指向的是环境第三方库里面的路径,打包后,这些路径就指向了打包后的文件夹,于是有了中文路径报错。 pyqt5的qwebengine,环境变量没有QTWEBENGINE_LOCALES_PATH(qt6才有的),所以原本的目录结构没法解决这个中文路径问题,nuitka打包,是通过将资源文件都放在程序根目录来解决的,因为qwebengine启动时会依次尝试三个路径,qt5的bin,qt5,应用程序路径。 所以pystand要想打包pyqt5的qwebegine,在中文路径下成功运行。应该也得采用nuitkta的做法,把资源文件,翻译文件挪出来,具体操作步骤是 1,增加os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = r'.\site-packages\PyQt5\Qt5\plugins'#这是设置pyqt5的插件目录 2,移动site-package\pyqt5\qt5\resources文件夹下所有文件至程序根目录,移动site-packages\PyQt5\Qt5\bin\QtWebEngineProcess.exe至程序根目录 3,此时应该能跑了,但是会报找不到翻译文件,把翻译文件也拿出来,移动site-packages\PyQt5\Qt5\translations\qtwebengine_locales文件夹,把这个文件夹放到根目录。 这样就可以在中文路径下运行带webengine的pyqt5了。
可以试试我的一个项目,名叫[PythonSizeCruncher](https://github.com/mengdeer589/PythonSizeCruncher),可以轻松裁剪一些常用的库。
你使用runtime下的python解释器运行get-pip,运行成功后,会在runtime/lib/sitepackage文件夹下面存放pip库,同时你需要修改runtime文件夹下的python._pth文件,取消import site前面的注释,即可成功导入runtime/lib/sitepackage文件夹,就能正常使用pip工具了
我做过一些小测试,pystand这种打包方式打包的程序,启动速度快于nuitka,秒杀pyinstaller,当然,我指的是第二次启动。第一次启动新打包的程序都会比较慢,因为杀毒软件要扫一遍。
在早期还没发布的时候,有一个朋友因为用了我的脚本,导致删除了系统文件,因此我才一刀切不允许在c盘使用,我考虑加一个确认按钮吧。
[https://github.com/mengdeer589/PythonSizeCruncher](url) 在此推荐一下我的项目,这是一个瘦身脚本,可以很轻易的做到打包后的文件精简
> @pass-wind 我从命令行启动pystand.exe 和 桌面双击启动 他们的启动速度差差了1倍, 命令行启动只要10s ,双击启动要20s,这怎么回事 第一次启动会慢很多。第二次及后面就正常了。另外,10s这个时间,可以优化程序了。如果是带界面的程序,建议先显示界面,然后再加载第三方库,可以用延迟加载,多线程加载等等。打包不要使用upx,不要搞成单文件,这两个操作都会增加启动时间。
刚接触linux下python程序打包,这里提供一个类似pystand的打包流程。 1,去https://github.com/astral-sh/python-build-standalone获取独立python 2,自己的代码放里面,自己的第三方库依赖也放里面 3,写个sh脚本,添加一下第三方库路径,调用bin/python 执行main.py
> > 刚接触linux下python程序打包,这里提供一个类似pystand的打包流程。 1,去[https://github.com/astral-sh/python-build-standalone获取独立python](https://github.com/astral-sh/python-build-standalone%E8%8E%B7%E5%8F%96%E7%8B%AC%E7%AB%8Bpython) 2,自己的代码放里面,自己的第三方库依赖也放里面 3,写个sh脚本,添加一下第三方库路径,调用bin/python 执行main.py > > 404 了咋回事 你仔细看看链接 应该是 https://github.com/astral-sh/python-build-standalone
我给个解法。官方提供的嵌入式解释器并不包含pip工具,以及tkinter模块,下面的步骤是怎么补上这个tkinter模块。 注:本方法目的在于后续可以复用,所以并不按照官方的目录结构来。 ①复制tkinter模块。从已经安装了tkinter模块的相同python解释器环境中复制,该模块通常位于解释器的Lib文件夹下,将tkinter文件夹复制到pystand/runtime/lib文件夹下,注意,这里需要新建一个lib文件夹。 ②复制tcl资源文件。复制tcl文件夹里面所有的文件,到pystand/runtime/lib文件夹下,tcl文件夹通常位于解释器的同级目录。 ③复制二进制模块。复制_tkinter.pyd,tcl86t.dll,tk86t.dll三个文件到pystand/runtime/lib文件夹下,这三个文件通常位于解释器的DLLs文件夹下。 ④修改路径。修改runtime文件夹里面的python310._pth文件,增加一行./lib。注意,这里有个点,代表同级目录的lib文件夹。 现在可以运行程序了。如果后续还需要打包tkinter模块。直接复制这里弄好的lib文件夹跟._pth文件到runtime文件夹下即可实现复用。