2017-04-19 12 views
0

自分のパッケージをそのフォルダから使用できますが、eggパッケージとしてインストールすると、cythonベースのモジュールをインポートすることはできません。パッケージは卵内のcythonライブラリをインポートできません

私は、次のパッケージ構造

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

モジュールmyfile.py輸入import fastcodeを持っています。 setup.pyでは、私は私がpython setup.py install実行する場合の指示に従って

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 

は、cythonコードはmypkgフォルダにする(Linuxまたはfastcode.sofastcode.pydをコンパイルして作成します持っています設定ファイル

mypkgフォルダーにアクセスしてpythonを実行すると、安全にimport mypkg.myfileを実行できます。 しかし、インストールされた.eggファイルが使用されるような別のフォルダからPythonを実行すると、エラーImportError: No module named fastcodeが発生します。

私はsetup.py

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

を追加しようとしました、これは(解凍したバージョンを探索することによって)eggファイルへfastcode.pydが追加されますが、まだ輸入のために動作しません。

答えて

0

私はそれを私の場合に修正する方法を見つけました:setup.cfgを削除しなければなりませんでした。興味のある人には、新しい設定では、.eggファイルには、fastcode.pydファイルだけでなく、fastcode.pyファイルとfastcode.pycファイルも含まれています(これは、以前のセットアップでのコンパイル後のmypkg.pydのファイルが存在しました)。

関連する問題