0
給定的目錄結構cythonize:如何編譯.pyx使用內部setup.py
projectroot/
docs/
project/
__init__.py
core/
__init__.py
another.pyx
anotherone.pyx
lib/
__init__.py
something.pyx
tests/
mytest.py
setup.py
而且setup.py
包含以下內容:
from Cython.Build import cythonize
try:
from setuptools import Extension, setup, find_packages
except ImportError:
from distutils.core import Extension, setup, find_packages
if __name__ == '__main__':
setup(
name='myproject',
version='1.0.0',
packages=find_packages(),
ext_modules=cythonize([
Extension('*', ['project/core/lib/*.pyx']),
Extension('*', ['project/core/*.pyx'])
])
)
編譯正確。唯一的問題是當我打開root directory
的python解釋器時,它會產生一個ImportError
。
(test) [[email protected] projectroot]# python
>>> from project.core.lib.another import AnotherClass
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named another
但是,當我打開任何其他目錄內的解釋器,它的工作原理。
(test) [[email protected] projectroot/project]# python
>>> from project.core.lib.another import AnotherClass
# no error
我該如何解決這個問題?
你真的'導入另一個.pyx'或你導入另一個嗎? –
@NilsWerner'import project.core.another' – Mico
是否生成'.so'文件?另外,我會推薦單獨的'Extension('project.core.lib.something',['project/core/lib/something.pyx'])'條目而不是星號。 –