gpt4 book ai didi

python - 跨项目的 Cython 定义?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:44:08 25 4
gpt4 key购买 nike

我有一个用 Cython 包装的 C++ 项目 Foo,它带有一个公开了一些类的 python 包装器:py_foo.Bar()。该项目通常使用 .pxd 和 .pyx 文件定义,并使用标准的 setup.py 安装。方法。

我有另一个用 Cython 包装的项目 Baz,它有一个 C++ 类和一个采用 Foo.Bar 实例的构造函数。现在,我看到转换和类型错误,例如Bar 不是类型标识符。

是否可以跨项目import/cimport

最佳答案

是的,绝对是。来自Cython documentation :

When you cimport a module called modulename, the Cython compiler searches for a file called modulename.pxd. It searches for this file along the path for include files (as specified by -I command line options or the include_path option to cythonize()), as well as sys.path.

Using package_data to install .pxd files in your setup.py script allows other packages to cimport items from your module as a dependency.

Also, whenever you compile a file modulename.pyx, the corresponding definition file modulename.pxd is first searched for along the include path (but not sys.path), and if found, it is processed before processing the .pyx file.

重要的部分是中间一段。在定义 Cython 类的项目的 setup.py 文件中,您需要在 package_data 键中列出 .pxd 文件。例如,

# setup.py
setup(
name='my_cython_package',
packages=['example'],
package_data={'example': '*.pxd'}, # or wherever the files are
# ...etc...
)

这将使它们与包的其余部分一起安装,然后您可以在其他项目中从它们导入。

关于python - 跨项目的 Cython 定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42704435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com