我正在尝试将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
Run Code Online (Sandbox Code Playgroud)
我的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
)
Run Code Online (Sandbox Code Playgroud)
运行以下test.py将引发错误.
import user #this line raised the 'ImportError: No module named data' below
user.doSomething()
Run Code Online (Sandbox Code Playgroud)
我得到的例外是
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
Run Code Online (Sandbox Code Playgroud)
如何进行导入工作?谢谢你的帮助.
小智 16
我在另一个项目中再次遇到这个问题.为了解决这个问题,我做了以下事情:
import和cimport陈述必须完全合格 rootFolder setup.py必须在同一水平比rootFolder rooFolder,包括rootFolder必须包含一个__init__.py setup.py的扩展名中include_dirs必须包含'.' 我创建了一个简单的项目来说明这一点.
这个页面帮助我创建了它.
但我的项目更简单,我认为如果我拥有它,它会帮助我很多.
我的项目还说明了如何在项目中自动构建所有cython文件.
我可能遗漏了有关 Cython 的一些内容,但我认为是:
import package.user
user.doSomething()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17680 次 |
| 最近记录: |