1
我想構建一個Python擴展並使用distutils打包它,但擴展安裝在根包中,不管我如何命名它。我的目錄結構是這樣的:Python擴展沒有安裝到子包中
foo/bar/extension.c
我setup.py
看起來是這樣的:
from distutils.core import setup
from distutils.extension import Extension
setup(name='foo.bar.extension',
cmdclass={'build_ext': build_ext},
ext_modules=[Extension('foo.bar.extension',
sources=['foo/bar/extension.c'])]
)
我成立了一個virtualenv
和我的Python shell中運行
python setup.py install
然後:
>>> import foo.bar.extension
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named invest_cython_core
>>> import extension #This works!
我可以更改哪些內容以便第一個導入語句有效,第二個導入語句失敗?
感謝您的迴應。是的,我沒有意識到這很重要,但我使用的是Cython的build_ext模塊。我對這些東西瞭解不多,但似乎Cython在嵌套擴展方面表現不佳。我已經將我的擴展移動到包的根目錄,並且它工作正常,但我更喜歡嵌套狀態。是這樣的:http://docs.python.org/distutils/index.html#distutils-index我應該用來了解編譯擴展的唯一參考? – Rich 2012-01-05 21:20:12
通常情況下,Cython的build_ext類應該擴展distutils類所做的工作,所以distutils文檔應該足夠了,但你永遠不知道。你有沒有測試過我創建__init__.py文件的建議,而不是將ext移動到頂層? – 2012-01-06 16:23:11
是的,我最初設置了這個項目,所以cython文件在一個也有__init__.py的目錄中。你是這個意思嗎?我也在Cython FAQ上看到你不能用子包編譯Cython。我不確定這是否是我的問題的描述:http://wiki.cython.org/FAQ#HowtocompileCythonwithsubpackages – Rich 2012-01-10 16:49:42