Ответ 1
Я мог бы пропустить что-то о Cython, но я думаю, что это:
import package.user
user.doSomething()
Я пытаюсь импортировать модуль cython data.pyx в другой модуль cython user.pyx. Все компилируется нормально, но когда я пытаюсь вызвать user.pyx в модуле python, я получаю сообщение об ошибке "ImportError: No module named data".
Все находится в одном каталоге.
package/
__init__.py #empty
setup.py
data.pxd
data.pyx
user.pyx
My 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
Как я могу заставить импорт работать? Спасибо за любую помощь.
Я мог бы пропустить что-то о Cython, но я думаю, что это:
import package.user
user.doSomething()
Я снова сталкиваюсь с этой проблемой в другом проекте. Чтобы решить эту проблему, вот что я сделал:
import
и cimport
должны быть полностью определеныrootFolder
setup.py
должен быть на том же уровне, что и rootFolder
rooFolder
, включая rootFolder
, должна содержать __init__.py
setup.py
расширение include_dirs
должно содержать '.'
Я создал простой проект, который иллюстрирует это здесь.
Эта страница помогла мне создать ее.
Но мой проект проще, и я думаю, что это очень помогло бы мне, если бы у меня было это.
Мой проект также иллюстрирует, как автоматически создавать все файлы cython в проекте.