0

次の指示に従ってください: Build QuantLib for Python(SWIG)

python setup.py build --compiler=msvc

なぜvcvarsall.bat見つからないのか不思議です。実際、このbatchファイルは次の場所にあります。

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC

さらに、次の場所にコピーしました。

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools

最終的に後者のパスを に追加しましたがSystem variables -> PATH、改善はありません。

Ps: error-microsoft-visual-c-10-0-is-required-unable-to-find-vcvarsall-bat(DUPLICATE)で同様のトピックが提起されたが、これまで提唱された解決策はどれも私を助けてくれませんでしたこの問題を克服します。

したがって、関連するフィードバックをいただければ幸いです。

OS: Windows10

Studio: Windows デスクトップ用 Express 2013

ブースト: v.1_58_0

SWIG: v.1_6

QuantLib: v.1_6

IDE: PTVS v.2.2.2

前もって感謝します

1 - 編集:スクリーンショットの下を参照してください (エラーを含む)

ここに画像の説明を入力

または:

=======================================================================
C:\local\QuantLib_SWIG_1_6\Python>python setup.py build --compiler=msvc
running build
running build_py
running build_ext
building 'QuantLib._QuantLib' extension
error: Unable to find vcvarsall.bat
========================================================================

2 - 編集:

get_build_version()モジュールからメソッドを更新することで、さらに先に進みました: msvc9compiler.pyhold in

C:\Users\user\Miniconda3\Lib\distutilsに:

#if majorVersion >= 13: updated
if majorVersion > 13:
    # v13 was skipped and should be v14
    majorVersion += 1
elif majorVersion == 13: #v13 no more skipped, UPDATED  on 11/13/2016   
      majorVersion -= 1 # pointing specifically to v.12

私のPython 3.5.2はの下でコンパイルされたのでMSC 1900 <=> VS 2015cmdただし、console ( ) がまだ返されるため、コンパイラが見つからないようです。

error:Unable to find vcvarsall.bat

Ps : このインストールには完全に驚かされました。最後の手段:VS2015 Community延期していたインストール

3 - 編集:

set MSSdk=1
set DISTUTILS_USE_SDK=1
python setup.py build

Error:
The program can't start because mspdb120.dll is missing from your computer. 
Try reinstalling the program to fix this problem  
error: command 'C:\Program Files (x86)\Microsoft Visual Studio  
12.0\VC\bin\x86_amd64\cl.exe Failed with exit status - 10737441515

解決:

コピーmspdb120.dllC:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64

python setup.py build
quantlib_wrap.cpp
QuantLib/quantlib_wrap.cpp: fatal error C1902: Program database manager  
mismatch; please check your installation 
error: command 'C:\Program Files (x86)\Microsoft Visual Studio   
12.0\VC\bin\x86_amd64\cl.exe Failed with exit status 2
4

2 に答える 2

0

vcvarsall.batVisual Studio の外部から Visual C/C++ コンパイラを実行する場合にのみ必要です。Visual C/C++ コンパイラが必要とするすべての環境変数を定義します。このバッチ ファイルは、デフォルトでインストールされる他のディレクトリに移動しないでください。これにより、環境変数が正しく設定されなくなります。

フル パスを使用せずにこのバッチ ファイルを別のプロセスから呼び出す必要がある場合は、Windows の詳細環境設定でユーザーまたはシステムvcvarsall.batのいずれかでディレクトリ パスを定義するか、後でこのバッチ ファイルを呼び出すプロセスのローカルにディレクトリ パスを追加する必要があります。 PATH PATH

プロセスが開始されるたびに、Windows は現在のプロセスの環境変数テーブルのコピーを新しいプロセス用に作成します。これは、バッチ ファイル内の環境変数の変更は、バッチ ファイルを実行するコマンド プロセスに対してのみ有効であり、 localPATHの変更後にこのコマンド プロセスによって開始されたすべてのプロセスに対してのみ有効であることを意味します。コマンド プロセス内での変更時に既に実行されている他のプロセスは、変更されていないのローカルコピーで引き続き実行されます。 PATHPATHPATH

そのため、ユーザーまたはシステム PATHが Windows の高度なシステム設定で変更された場合。この変更は、Windows を完全に再起動した後にのみ、既に実行中のすべてのプロセスに対して有効になります。Windows を再起動せずにユーザーまたはシステム を変更すると、変更PATHにWindows デスクトップから開始されたプロセスに対してのみアクティブになります。これらの新しいプロセスについては、Windows デスクトップの現在の環境変数テーブルが、環境変数のコピーを作成する際のソースとして取得されます。新しいプロセス。

システムに文字列を追加したと思います PATH

;%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC

これにより、変更前の既存のセミコロンがまだセミコロンで終わっていない場合にのみ、先頭のセミコロンが必要になりPATHます。

このシステム PATHの変更後、 Windows を再起動して、すべてのプロセスに対してアクティブにすることをお勧めします。

ところで、システム プロセスではこのディレクトリが必要ないため、このパスをシステム に追加しません。現在ユーザー環境テーブルにない場合は、ユーザーに追加するか、ディレクトリパスを使用してユーザー作成します。ほとんどの場合、このディレクトリ パスはすべてのプロセスがユーザー プロセスとして開始するために必要なわけではないため、ここのようにローカルに特定のディレクトリ パスを追加するだけで十分です。PATHPATH PATH PATHPATH PATH

于 2016-11-12T09:57:22.613 に答える
0

これはおそらく、Pythondistutilsパッケージが別のバージョンの Visual Studio を探しているためです。私の知る限り、Python 2.7 から 3.2 は VC++9 でビルドされました。バージョン 3.3 と 3.4 は VC++10 でビルドされました。Python の 3.5 以降のバージョンは VC++14 でビルドされています。を実行distutilsすると、特に指定しない限り、それぞれが対応する VC++ バージョンを探します。したがって、Python (ちなみに、どのバージョンを使用していますか?) は、vcvarsall.batそのパスを調べないため、VC++12 からのパスを見つけられません。

Python docsによると、回避策は、環境変数を設定DISTUTILS_USE_SDKし、環境が既に設定されており、 を探す必要がないことMSSdkを伝えることです。その後、Visual Studio のコマンド プロンプトからスクリプトを実行すると、うまくいく場合があります。distutilsvsvarsall.bat

これは、VC++ のバージョンでコンパイルされたモジュールが別のバージョンでコンパイルされた Python で動作することが保証されていない可能性があるため、Python インストールに対応するモジュールをインストールして使用することをお勧めします。

于 2016-11-13T16:55:58.557 に答える