我正在尝试将 cython 模块 data.pyx 导入另一个 cython 模块 user.pyx。一切都编译得很好,但是当我尝试在 python 模块中调用 user.pyx 时,我收到错误“ImportError: No module named data”。
一切都在同一个目录中。
package/
__init__.py #empty
setup.py
data.pxd
data.pyx
user.pyx
我的 setup.py
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [
Extension("data", ["data.pyx"]),
Extension("user", ["user.pyx"],include_dirs = ['myPackageDir'])
]
cài đặt(
name = 'app',
cmdclass = {'build_ext': build_ext},
ext_modules = ext_modules
)
运行下面的 test.py 会报错。
import user #this line raised the 'ImportError: No module named data' below
user.doSomething()
我得到的异常(exception)是
Traceback:
File "test.py", line 1, in
import package.user
File "user.pyx", line 1, in init user (user.c:3384)
ImportError: No module named data
我怎样才能使导入工作?感谢您的帮助。
我在另一个项目中再次遇到这个问题。为了解决它,这是我所做的:
- tất cả
nhập khẩu
Và cimport
语句必须是完全限定的
- 所有的python代码都必须包含在一个
rootFolder
setup.py
必须与 rootFolder
处于同一级别
rooFolder
中的所有文件夹,包括 rootFolder
都必须包含 __init__.py
- 在您的
setup.py
中,扩展的 include_dirs
必须包含 '.'
我创建了一个简单的项目来说明 đây .
cái nàytrang帮助我创建了它。
但是我的项目比较简单,如果我拥有它,我想它会对我有很大帮助。
我的项目还说明了如何自动构建项目中的所有 cython 文件。
Tôi là một lập trình viên xuất sắc, rất giỏi!