私はSWIGを使ってPythonのC++拡張を書いています。私がPythonとSWIGについて理解しているところから、各モジュールには独自の.pydファイルが必要です。たとえば、 'mymodule'という名前のモジュールがある場合、対応する '_mymodule.pyd'ファイルが存在するはずです。PythonとSWIG - 単一の.pyd(.so)の複数のモジュール
私の特別なケースでは、1つの 'pyd'ファイルと複数のモジュールがリンクされています。
mypackage/
mypackage/__init__.py
mypackage/module1.py
mypackage/module2.py
(.I)VS2010で同じプロジェクトの下にあるすべてのファイルを、私は倍数の.pydを維持する必要がありますする必要はありませんので、私は私のインターフェイスを置くことができます。
編集:これまでのところ、私がそれを動作させる唯一の方法は、 'pyd'ファイルを_module1.pydと_module2.pydの2つの新しいファイルに複製することです。しかし私は不必要に30Moの 'pyd'ファイルを複製する必要があるので、この解決策が嫌いです。モジュールを1つの '_package.pyd'ファイルにリンクする方が好きです。
これを実行する最善の方法は何ですか?
Pythonローダーがdel dll/soをロードしてinit関数を呼び出すため、.pydに異なる 'modules'を持つことはできません。内部的に名前空間を使用し、mymodule.stuff1のような別のものを登録できますmymodule .stuff2、これは異なるモジュールの名前空間が似ているはずです。 私はあなたが不正行為をして複数のPy_InitModuleを呼び出すことができないと確信しています –
sherpya