标签: cimport

cython:不允许超出主包的相对 cimport

我正在尝试在 cython 中使用显式相对导入。从发行说明看来,相对导入应该在 cython 0.23 之后工作,而我将 0.23.4 与 python 3.5 一起使用。但是我收到了这个奇怪的错误,我找不到很多引用。错误仅来自 cimport:

driver.pyx:4:0: relative cimport beyond main package is not allowed
Run Code Online (Sandbox Code Playgroud)

目录结构为:

    myProject/
        setup.py
        __init__.py
        test/
            driver.pyx
            other.pyx
            other.pxd
Run Code Online (Sandbox Code Playgroud)

看起来我可能在 setup.py 中搞砸了,所以我包含了下面的所有文件。

setup.py

driver.pyx:4:0: relative cimport beyond main package is not allowed
Run Code Online (Sandbox Code Playgroud)

driver.pyx

#!/usr/bin/env python
from . import other
from . cimport other
Run Code Online (Sandbox Code Playgroud)

other.pyx

#!/usr/bin/env python

HI = "Hello"

cdef class Other:
    def __init__(self):
        self.name = "Test"

    cdef get_name(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

other.pxd

cdef class Other:
    cdef get_name(self)
Run Code Online (Sandbox Code Playgroud)

我已经试过移动 …

python compiler-errors cython python-3.x cimport

6
推荐指数
1
解决办法
2070
查看次数

设置 setuptools 以创建带有可用标头的 cimportable 包

我尝试实现答案/sf/answers/4023641961/,但我坚持从另一个包导入一个包。

代码在这里:https : //github.com/iamishalkin/setuptools_cython_question

我想要的是wrap从包装器文件夹中获得一个独立的包,这样您就可以在没有cust包的情况下使用它。

而且我还希望能够通过FuncWrapperwrap.

我所做的:

  • 首先,我python setup.py bdist_wheelwrapper文件夹中运行(我想这是我做错的地方,因为它只给了我二进制文件)
  • 下一个 pip instal dist/(some_name).whl
  • 接下来,我添加import wrapinclude_dirs=wrap.get_include()custom/setup.py喜欢它的完成numpy
  • python setup.py bdist_wheelcustom文件夹中运行,但失败了,第一步没有创建除二进制文件之外的文件

所以问题是:如何将.pxd文件添加到最终包中。

我也试过sdist哪个不编译cython代码而只是复制它。

python setuptools cython cimport

4
推荐指数
1
解决办法
178
查看次数