0

Cython を使用して、Linux で自作の Python 拡張機能をコンパイルすることに慣れています。Linux では、distutils を使用して "myext.so" を生成します。これを my に追加するだけでPYTHONPATHimport myextpython 呼び出しを利用できるようになります。

現在、Windows 7 で (Cython 0.18 を使用して) 動作させようとしています。distutils を正常に実行して、myext.pydファイルを取得しました。しかし、「myext.pyd」へのパスを追加しているようです( http://docs.python.org/2/faq/windows.html#is-a-pyd-file-the-same-as-a-dll )窓下では物足りない。「myext.py」はどのように見えるべきか、つまり、Python (2.7) インストールで拡張機能を利用できるようにする手順は何ですか。

注:「myext.pyd」を含むディレクトリをPYTHONPATHに追加した後も、次のようになります:

python BdmLsim4.py -i model.xml
Traceback (most recent call last):
  File "BdmLsim4.py", line 6, in <module>
    import myext
ImportError: DLL load failed: module not found.

どうもありがとう。

4

1 に答える 1

1

リンクしたドキュメントに明確に書かれています:

の検索パスfoo.pydPYTHONPATHであり、Windows が検索に使用するパスと同じではないことに注意してくださいfoo.dll。また、プログラムを実行するために foo.pyd が存在する必要はありませんが、プログラムを dll とリンクしている場合は dll が必要です。もちろん、インポート foo と言いたい場合は foo.pyd が必要です。DLL では、リンケージは __declspec(dllexport) を使用してソース コードで宣言されます。.pyd では、リンケージは使用可能な関数のリストで定義されます。

そのため、.pydファイルを python のインストール ディレクトリ ( site-packages) 内に配置するか、環境変数を変更して、ファイルが配置されPYTHONPATHているディレクトリを追加する必要があります.pyd

さらに別の方法として、.pthファイルを使用してPYTHONPATH.

于 2013-05-07T07:09:17.283 に答える