2017-04-19 52 views
0

我可以從其文件夾中使用我的軟件包,但只要我將它安裝爲egg軟件包,就無法導入基於cython的模塊。軟件包無法導入雞蛋中的cython庫

我有以下封裝結構

src/ 
├── mypkg/ 
│ ├── __init__.py 
│ ├── myfile.py 
├── cython/ 
│ ├── fastcode.pyx 
setup.py 

模塊myfile.py進口import fastcode。在setup.py,我有

setup(
    name='mypkg', 
    version='0.1', 
    packages=find_packages(where="src"), 
    package_dir={'':'src'}, 
    cmdclass={'build_ext': build_ext}, 
    ext_modules=df_ext_modules, 
) 

我也有setup.cfg

[build_ext] 
build-lib=src/mypkg 

如果我運行python setup.py install,在用Cython代碼獲取mypkg文件夾中的指示編譯和創建(在Linux或fastcode.sofastcode.pyd配置文件。

現在,如果我去mypkg文件夾,並運行python,我可以安全地做import mypkg.myfile。 但是,當我從其他文件夾運行python(例如安裝的.egg文件被使用)時,我得到錯誤ImportError: No module named fastcode

我嘗試添加

package_data={ 
    'mypkg': ['*.pyd', '*.so'] 
}, 

setup.py,這增加了fastcode.pyd蛋文件(探索解壓縮後的版本),但仍然導入不起作用。

回答

0

我發現如何解決它在我的情況:不得不刪除setup.cfg。對於那些有興趣的人來說,問題是,在新的設置下,.egg文件還包含生成的fastcode.py文件和fastcode.pyc文件,而不僅僅是fastcode.pyd文件(我期望在編譯之後查看mypkg之前的設置.pyd文件存在)。