Python 2.7 のMicrosoft Visual C++コンパイラ)をダウンロードしてインストールした場合、_vcvarsall.bat
_のフルパスは次のとおりです。
_C:\Users\UserName\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\vcvarsall.bat
_
ただし、次のコードはそのパスを返すことができません。
_from distutils import msvc9compiler
msvc9compiler.find_vcvarsall(9.0)
_
インストーラーはインストール情報をレジストリに書き込みません。また、find_vcvarsall()
のソースコードからは、_vcvarsall.bat
_設定から_VS90COMNTOOLS
_ファイルを見つけることができないようです。 _vcvarsall.bat
_を含むフォルダーの名前はVC
である必要があるためです。
_productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")
_
レジストリまたはフォルダ名を変更せずにコンパイラを使用するにはどうすればよいですか?
Setuptoolsを6.0以降に更新します。それらのバージョンでは、setuptoolsはvcvarsall.batでMicrosoft Visual C++ Compiler for Python 2.7を自動検出できます。
以下を参照してください。
インストールしようとしているパッケージの_setup.py
_ファイルを確認します。古いパッケージの場合、distutils.core.setup()
ではなくsetuptools.setup()
をインポートしている可能性があります。
私はこれらの要因を組み合わせて(2015年に)これに遭遇しました。
Python 2.7 from http://aka.ms/vcpython27 のMicrosoft Visual C++コンパイラ
distutils.core.setup()
を使用する古いパッケージ
pip
を使用するのではなく、_python setup.py build
_を実行しようとしています。
最近のバージョンのpipを使用する場合、_setup.py
_がdistutilsを呼び出す場合でも、パッケージにsetuptoolsを使用するよう強制(monkeypatch)します。ただし、pipを使用せず、代わりに_python setup.py build
_を実行する場合、ビルドプロセスはdistutils.core.setup()
を使用します。これは、コンパイラのインストール場所を認識しません。
ステップ1:適切なVisual C++ 2008コマンドプロンプトを開きます
[スタート]メニューまたは[スタート]画面を開き、 "Visual C++ 2008 32ビットコマンドプロンプト"(pythonが32ビットの場合)または "Visual C++ 2008 64ビットコマンドプロンプト"を検索します。 (pythonが64ビットの場合)。実行します。コマンドプロンプトでは、タイトルバーにVisual C++ 2008 ...と表示されます。
ステップ2:環境変数を設定する
開いたばかりのコマンドプロンプトでこれらの環境変数を設定します。
_SET DISTUTILS_USE_SDK=1
SET MSSdk=1
_
リファレンス http://bugs.python.org/issue23246
ステップ3:ビルドとインストール
cd
をビルドするパッケージに追加し、_python setup.py build
_を実行してから、_python setup.py install
_を実行します。 virtualenvにインストールする場合は、ビルドする前にアクティブ化します。
クリスチャンロングは実用的なソリューションを提供します。ただし、「Visual C++ 2008 32ビット/ 64ビットコマンド」で毎回変更したくない場合は、「vcvarsall.bat」の場所、つまり「C:\ Users\UserName\AppData」を簡単に見つけることができます。\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\vcvarsall.bat」、Python27\Lib\distutils\msvc9compiler.pyのfind_vcvarsall(version)関数を変更します
このような:
def find_vcvarsall(version):
productdir= "C:/Users/UserName/AppData/Local/Programs/Common/Microsoft/Visual C++ for Python/9.0"
vcvarsall = os.path.join(productdir, "vcvarsall.bat")
if os.path.isfile(vcvarsall):
return vcvarsall
else:
return None
シンプルで見苦しいが便利。
私はこのパッケージで同じ問題を抱えていましたが、彼らは実際にクリーンインストールでそれをテストしなかったようです。
最後に、キーを追加してCOMPUTER\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VC
次に、productdir
という名前の文字列値を追加し、その値をvcvarsall.batへのパスに設定しました。これは、あなたと同じです。
コマンドラインでsetuptoolsをアップグレードします。
pip install --upgrade setuptools
6.0以上のsetuptoolsの最新バージョンは、Microsoft Visual C++ Compiler for Python 2.7