Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Qt5 中文路径处理问题 #58

Open
rainzee opened this issue Oct 10, 2023 · 3 comments
Open

Qt5 中文路径处理问题 #58

rainzee opened this issue Oct 10, 2023 · 3 comments

Comments

@rainzee
Copy link

rainzee commented Oct 10, 2023

在使用 Pystand 打包后,如果目录中出现中文,会出现无法加载插件的情况,如下:
image

这应该不是 Qt 的问题,在不打包的情况下,是能够正常启动,或者,可以通过将 \lib\PyQt5\Qt5\plugins 中的 \platforms 文件夹移动到 exe 的平级目录中,那么此时在中文路径下也没问题了。请问如何修复该问题。

@skywind3000
Copy link
Owner

@rainzee
Copy link
Author

rainzee commented Oct 10, 2023

https://github.com/skywind3000/PyStand/wiki/Frequently-Asked-Questions

看 FAQ

这个我已经看了,我的意思是为什么在不打包的情况下,在中文路径启动没有问题,但是打包之后就会出现这个问题,这是为什么?是因为 Cpp 吗

@mengdeer589
Copy link

我最近在在打包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了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants