自分のパッケージをそのフォルダから使用できますが、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.so
)fastcode.pyd
をコンパイルして作成します持っています設定ファイル
mypkg
フォルダーにアクセスしてpython
を実行すると、安全にimport mypkg.myfile
を実行できます。 しかし、インストールされた.egg
ファイルが使用されるような別のフォルダからPythonを実行すると、エラーImportError: No module named fastcode
が発生します。
私はsetup.py
に
package_data={
'mypkg': ['*.pyd', '*.so']
},
を追加しようとしました、これは(解凍したバージョンを探索することによって)eggファイルへfastcode.pyd
が追加されますが、まだ輸入のために動作しません。