在 PySide2 虚拟环境中调用 lrelease 时如何修复 "Not Recognized As an Internal or External Command"?

How to fix "Not Recognized As an Internal or External Command" when calling lrelease in PySide2 virtual environment?

我正在处理这个 template project for PySide2
正如您在 documentation 中看到的那样,用户必须手动将 lrelease.exe 的路径添加到 PATH 或名为 LRELEASE_BIN.[=26= 的新环境变量中]

Resources and translations

In order to ease the development process, the Qt Creator project app.pro is provided. You can open it to edit the UI files or to manage resources. Translations can be edited using Qt Linguist, part of the Qt SDK. In order to build the translations, you will need to have the lrelease command on your PATH or set its full path to the LRELEASE_BIN environment variable. UI files, translations and resources can be built like this:

python setup.py build_res

作为我对 fork 所做更改的一部分,我想使用安装在虚拟环境中的 PySide2 包中的 lrelease
它将避免必须安装 Qt 并使所有依赖项自包含。 问题是当我尝试使用 lrelease.exe

的本地路径启动 python.exe .\setup.py build_res
lrelease = ".venv/Lib/site-packages/PySide2/lrelease.exe"
check_call([lrelease, "app.pro"])

我收到以下错误:

"C:/Users/my_user/path_to_my_project/.venv/Lib/site-packages/PySide2/lrelease-pro.exe" Not Recognized As an Internal or External Command

subprocess.CalledProcessError: Command '['.venv/Lib/site-packages/PySide2/lrelease.exe', 'app.pro']' returned non-zero exit status 1.

有没有办法依赖pip安装的lrelease可执行文件?

根据错误消息判断,您启动的 lrelease.exe 程序似乎在执行 lrelease-pro.exe,它不存在于目录 .venv/Lib/site-packages/PySide2/ 中。我可以确认在 Windows 上包含 PySide2 5.15.2 的虚拟环境中我自己没有这样的程序,只有 lrelease.exe:

$ find .venv/ -name "*lrelease*"
.venv/Lib/site-packages/PySide2/lrelease.exe

鉴于lrelease.exe是在.venv/Lib而不是.venv/Scripts,感觉不是PySide2为了用户使用而提供的,相反pyside2-lupdate.exe.venv/Scripts 中。在 Linux 上,lrelease 甚至在 .venv/lib 中都没有提供,完全没有。

所以我敢打赌,不,目前不支持使用 pip 安装的 lrelease.exe 可执行文件作为 PySide2 的一部分。潜在替代品:

  • 如果lrelease.exe也由Qt Creator提供,可以install Qt Creator alone,而不是与完整的Qt SDK一起使用,非常大。

  • PyPI 上搜索“lrelease”会产生 distutils-uisetup_qt 听起来他们可能会提供 lrelease 可执行文件。