我开始使用 Cython,在我的源文件中使用 gettext 翻译时遇到了问题。例如,我有一个名为ScriptParser.py的源文件,我正在测试将其编译为 .pyd 对象。这根本没有修改源代码,只是试图让文件在此刻进行编译。此文件是从项目中的主要文件之一导入的。该主文件还导入了一个不同的源文件,它使用 gettext 来安装翻译函数_()。Cython 给我的错误是这样的:
Error compiling Cython file:
------------------------------------------------------------
...
fn += u':%i' % step
fn += u']'
return eval(fn)
except:
error(_(u'IndexError'))
^
------------------------------------------------------------
ScriptParser.py:416:19: undeclared name not builtin: _
显然 Cython 正在抱怨,因为在这个源文件中没有_()引用或定义或任何东西或排序。所以我想知道我应该如何解决这个问题。我是否需要更改构建脚本以包含更多文件?现在我只是尝试一次编译一个文件来测试奇怪的东西等等。当我遇到这个问题时,我已经以这种方式编译了 2 个源文件。
这是我的构建脚本供参考:
from distutils.core import setup
from Cython.Build import cythonize
setup(
name = 'testing',
ext_modules = cythonize(['ScriptParser.py',
],
annotate=True),
)
并调用:
setup.py build_ext --inplace
现在就像我说的那样,我可能只是搞砸了构建过程,这是我第一次涉足 Cython。所以也许我错误地试图一次编译一个源文件,而不是做一些“整个项目”的方法?