我正在尝试将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'])
]
setup(
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()
我得到的例外是
Traceback:
File "test.py", line 1, in <module>
import package.user
File "user.pyx", line 1, in init user (user.c:3384)
ImportError: No module named data
如何进行导入工作?谢谢你的帮助。
答案 0 :(得分:14)
我在另一个项目中再次遇到此问题。要解决这个问题,我就是这样做的:
import
和cimport
声明必须完全合格rootFolder
setup.py
必须与rootFolder
rooFolder
中包含rootFolder
的所有文件夹必须包含__init__.py
setup.py
广告include_dirs
中必须包含'.'
我创建了一个简单的项目来说明这个here 这page帮助我创造了它 但是我的项目比较简单,如果有的话,我觉得它会帮助我很多 我的项目还说明了如何在项目中自动构建所有cython文件。
答案 1 :(得分:1)
我可能会遗漏一些关于Cython的内容,但我认为是:
import package.user
user.doSomething()