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



我正在PySide2的这个模板项目上工作。
正如您在文档中所读到的,用户必须手动将lrelease.exe的路径添加到PATH或添加到一个名为LRELEASE_BIN的新环境变量。

资源和翻译

为了简化开发过程,提供Qt Creator项目app.pro。您可以打开它进行编辑UI文件或管理资源。可以使用Qt Linguist, Qt SDK的一部分。为了建立翻译,您需要在PATH上设置lrelease命令,或者设置其LRELEASE_BIN环境变量的完整路径。UI文件,翻译和资源可以这样构建:

python setup.py build_res

作为我对我的分支所做的更改的一部分,我想使用安装在虚拟环境中的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程序似乎执行了目录.venv/Lib/site-packages/PySide2/中不存在的lrelease-pro.exe。我可以确认,在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提供,则可以单独安装Qt Creator,而不是与完整的Qt SDK一起安装,这是非常大的。

  • 查找"lrelease";在PyPI上生成distutil -uisetup_qt,听起来它们可能提供lrelease可执行文件。

相关内容