vscode python gettext:Pylance报告未定义的变量“_”

rbl8hiat  于 12个月前  发布在  Python
关注(0)|答案(2)|浏览(181)

在一个本地化的程序中,我在主模块src/testgettext.py中使用gettext.install()。
文档(python3.10.7)说
gettext.install(domain,localedir=None,codeset=None,names=None)这将在Python的内置命名空间中安装函数_().
代码

import gettext

gettext.install("any")

de = gettext.translation('testgettext',localedir="src/locales", languages=['de'])

de.install()

print(_("Selected Files:"))

函数,从'src/locales/de/LC_MESSAGES/testgettext. po'生成'Ausgewählte Dateien:'。
然而,我得到警告“”是没有定义Pylance(reportUndefinedVariable)...在我最初的主文件中,这个“问题”出现了85次,把任何重要的问题都搞乱了。
插入_ = t.gettext可以删除pylance-problem-message,但仅限于模块级别。python-gettext-docu:
这只将
()放在模块的全局命名空间中,因此只影响此模块内的调用。所有其他模块也必须更改。
所以我的问题是为了在vcode中使用python gettext而没有关于'_()'的不必要的pylance警告,该怎么做?
顺便说一句:在eclipse/pydev中,代码运行没有任何问题。

wz8daaqr

wz8daaqr1#

pylance的报告没有错,它不能检测到_是由gettext.install()定义的,因此假设它是一个未定义的变量。
您可以通过添加类型提示来指示此_是返回已翻译字符串的函数

from typing import Callable

def _(s: str) -> str:
    return s
68de4m5k

68de4m5k2#

最后I found the answer
...你可能想告诉Pyright这些在运行时可用的额外符号。为此,可以添加一个名为__builtins__.pyi的本地类型存根文件
在项目的基础中插入一个名为__builtins__.pyi的文件,其内容为_ = str,pyright将解释为_被评估为str类型的全局符号。

相关问题