3

現在、 Windows での64 ビット拡張モジュールのコンパイルの指示に従って、Windows で 64 ビット拡張をビルドしています。

これをスクリプト化したいので、これを行うたびに Windows SDK コマンド シェルを開く必要はありません。そのため、バッチ ファイルがあります。

setlocal EnabledDelayedExpansion
CALL "C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\SetEnv.cmd" /x64 /release
set DISTUTILS_USE_SDK=1
\path\to\python.exe \path\to\setup.py bdist --format=msi

ただし、これらのエラーが発生します。cl.exeパスに戻るにはどうすればよいですか?

Could not locate executable cl.exe
Executable cl.exe does not exist

この投稿から明らかなように、私は Windows での拡張機能の構築についてほとんど知らないので、より良い方法があれば提案してください。

編集: SetEnv.cmd への元の呼び出しはエラーを発生させます。

The x64 compilers are not currently installed.
Please go to Add/Remove Programs to update your installation.
.
Setting SDK environment relative to C:\Program Files\Microsoft SDKs\Windows\v7.0
.
The system cannot find the batch label specified - Set_x64

次に、システム パスに基づいて使用するさまざまなコマンドにいくつかのエラーが発生します (たとえば、git を見つけることができない git のサブプロセス呼び出し)。

CL.exe は にインストールされていC:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Bin\amd64\cl.exeます。Windows SDK Cmd Shell をショートカットで開き、ここから通常の方法でインストールすれば見つかります。

4

3 に答える 3

3

後世のために。これは期待どおりに機能します。ただし、バッチ ファイルにタイプミスがあります。最初の行を次のように置き換えると

setlocal EnableDelayedExpansion

すべてが期待どおりに機能します。問題は、!PATH! SetEnv.cmd で適切に展開されていませんでした。

于 2012-04-11T03:35:57.310 に答える
0

システムに Visual Studio がインストールされている場合は、バッチ スクリプトに実行するステップを追加しますvcvarsall.bat。たとえば、Visual Studio 2010 がインストールされている場合、このバッチ ファイルは

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat",

または、Visual Studio をインストールしたドライブ (既定のインストール場所を上書きしていない場合)。

于 2012-04-10T16:57:04.820 に答える
0

この問題に対する私の解決策は、Python スクリプトを使用することです。これは、Windows バッチ スクリプトよりもはるかに簡単です。subprocessモジュールを使用して他のプログラムを呼び出すことができ、明示的に変更しない限り、環境変数はそのまま保持されます。

ところで、Cythonは Python を EXE ファイルにコンパイルする唯一の方法ではありません。cz_freezeのようなツールも使用できます。これは、Cython の他の機能が必要ない場合は、少し簡単だと思います。

于 2012-04-10T16:32:45.300 に答える