8

正確にはプログラミング関連ではありませんが、python setup.py install を使用して python パッケージをインストールしようとしているときに直面しているエラーについてです。

PyML パッケージの tar ファイルをダウンロードしました。次に、抽出した後、以下の手順を実行しました。

DOS プロンプトで、変数を次のように設定します。

SET VS90COMNTOOLS=%VS110COMNTOOLS%

展開された PyML フォルダー内の setup.py があるディレクトリに移動し、次を実行します。

python setup.py build

python setup.py install

しかし、両方のステップで、ext/hash_map no such file found に関連して、以下のようなエラーが発生します。

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\INCLUDE\xlocale(336): 警告 C4530: C++ 例外ハンドラーが使用されていますが、アンワインド セマンティクスが有効になっていません。/EHsc を指定

e:\ajit\pyml-0.7.13.tar\dist\pyml-0.7.13\pyml\containers\ext\SparseDataSet.h(14): 致命的なエラー C1083: インクルード ファイルを開けません: 'ext/hash_map': いいえそのようなファイルまたはディレクトリ

エラー: コマンド '"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\cl.e xe"' が終了ステータス 2 で失敗しました

私は何が欠けていますか?このエラーを解決して PyML をインストールする方法。

Python バージョン: 2.7.5 MSC v.1500 32 ビット (Intel)] Windows 8 マシンの win32 で。

PyML バージョン:0.7.13

4

1 に答える 1

3

まず、Python バイナリのビルドに使用したものと同じコンパイラ (VS8) を使用することをお勧めします。

Python 2.6、2.7、および 3.1 はすべてそのリリース (つまり 2008) でビルドされています。 もう 1 つの長い伝統により、Python 拡張モジュールは、Python 自体と同じコンパイラ バージョン (具体的には CRT バージョン) でビルドする必要があります。したがって、これらのリリースの拡張モジュールをビルドするには、VS 2008 または VS 2008 Express のコピーが必要です。

おそらく、次の質問は「C++ コンパイラで特定の CRT バージョンを使用するように強制する方法は?」です。

第二に、 gcc と msvs にtr1ライブラリを含めるには異なるシンタックスがあるため、これはあなたの場合の解決策ではありません。たとえば、この質問を参照してください。MSVSの代わりに、# include <ext/hash_map>である必要があります# include <hash_map>。MSVS の使用に固執する場合、おそらく PyML コードを変更することになります。

おそらく、MinGW の使用に切り替えることができます。ここにステップバイステップのハウツーがありますが、PyML をこの方法で構築できるかどうかは確認していません。11 月 14 日より前にはできません。

于 2013-11-10T20:38:22.977 に答える