[Python resources in languages other than English]

Windowsで64bitコンパイラを使う

Pythonがビルドに利用しているWindowsのコンパイラとランタイムライブラリ

Pythonバージョン SDK コンパイラ Visual C++ ランタイム
2.7 6.1 MSC v.1500 2008 msvcr90
3.3, 3.4 7.1 MSC v.1600 2010 msvcr100

コンパイラの入手方法

Visual C++ Express の各バージョンをインストールするとVCコンパイラ(cl.exe)も一緒にインストールされます。 しかし、これらのコンパイラは32bit版であるため、64bit版のVCコンパイラを利用するには、別途SDKをインストールします。

Python2.7

Python2.7対応のC拡張ライブラリをコンパイルするためにはMSC v.1500 が必要です。 32bit版は Visual C++ 2008Expressから入手可能ですが、64bit版はSDK6.1に含まれています。 最近、「Microsoft Visual C++ Compiler for Python 2.7」が公開され、コンパイラだけのインストールが可能になりました。 setuptools>=6.0 であれば、こちらのコンパイラを認識するようになっているようです。

Microsoft Visual C++ Compiler for Python 2.7

setuptools 6.0以上が必要です。

setuptoolsのアップグレード:

pip install -U setuptools

エラーの対応

9/29/2014以降にダウンロードした場合は修正されていますが、 amd64 の場合に環境変数の設定が足らずにエラーが発生する場合があります。 以下のエラーが出る場合は vcvarsall.bat ファイル(通常 C:\Users\{ユーザー名}\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0 以下にインストールされています)を修正します。

エラー:

ValueError: [u'path', u'include', u'lib']

vcvarsall.bat:

:amd64
echo Setting environment for using Microsoft Visual Studio 2008 x64 tools.
set VCINSTALLDIR=%~dp0VC\
set WindowsSdkDir=%~dp0WinSDK\
if not exist "%VCINSTALLDIR%Bin\amd64\cl.exe" goto missing
set PATH=%VCINSTALLDIR%Bin\amd64;%WindowsSdkDir%Bin\x64;%WindowsSdkDir%Bin;%PATH%
set INCLUDE=%VCINSTALLDIR%Include;%WindowsSdkDir%Include;%INCLUDE%
set LIB=%VCINSTALLDIR%Lib\amd64;%WindowsSdkDir%Lib\x64;%LIB%
set LIBPATH=%VCINSTALLDIR%Lib\amd64;%WindowsSdkDir%Lib\x64;%LIB%
goto :eof

LIBPATHをsetしてる行を追加してください。内容はその上の行のLIBの設定と同じです。

Python3.4

Python3.4対応のC拡張ライブラリをコンパイルするためにはMSC v.1600 が必要です。 32bit版は Visual C++ 2010 Expressから入手可能ですが、64bit版はSDK7.1に含まれています。 また、インストール順序によってエラーが発生したり、SP1へのアップデートでファイルが消えたりします。 (消えたファイルを修復するプログラムが用意されています。)

Windows SDK7.1

注意点

  • Python3.4のコンパイルにはVC10 (Visual C++ 2010)が使われています
  • 64bitコンパイラはSDK 7.1に入っています
  • VC2010のあとにWindows SDK 7.1はインストールできません(最後にエラーが発生します)
  • VC2010SP1をインストールすると64bitコンパイラが消えてしまいます。
  • 修正プログラムにより、コンパイラが復活します。
  • VC2010 ExpressやSDKにはvcvars64.batというコンパイラの環境変数を設定するファイルが入っていないため、独自に用意しなければなりません。
Copyright © 2001-2015, Python.jp