エラー:vcvarsall.batが見つかりません


851

私はPythonパッケージdulwichをインストールしようとしました

pip install dulwich

しかし、不可解なエラーメッセージが表示されます。

error: Unable to find vcvarsall.bat

パッケージを手動でインストールしようとすると、同じことが起こります。

> python setup.py install
running build_ext
building 'dulwich._objects' extension
error: Unable to find vcvarsall.bat

6
将来の参考のために、これをどのプラットフォームで使用するかを確認してください。
viam0Zah 2011

47
あなたは、これがludicrously不可解と役に立たないエラーメッセージだと思うならば、でバグのために投票してくださいbugs.python.org/issue2943
大佐はパニック

48
マイクロソフトは現在、ソリューションを提供しています:microsoft.com/en-us/download/details.aspx
id

6
:私はあなたがホイールとsetuptoolsの7.0で提供されたリンクをダウンロードしてインストールしようとしたが、それは私がメッセージを取得する動作しません@MartijnPieters C:\Users\User\libfreenect\wrappers\python>python setup.py install running install running build running build_ext building 'freenect' extension error: Unable to find vcvarsall.bat
compski

4
スティーブ・ダワー(MicrosoftのPythonのチームの男)は、このトピックの価値読み取りに関するブログ記事を書いた:blogs.msdn.microsoft.com/pythonengineering/2016/04/11/...
コーディPiersall

回答:


683

更新:コメントは、ここの指示が危険であるかもしれないことを指摘します。Visual C ++ 2008 Expressエディションまたは専用のMicrosoft Visual C ++ Compiler for Python詳細)を使用し、以下の元の回答を使用しないことを検討してください。元のエラーメッセージは、必要なバージョンのVisual C ++がインストールされていないことを意味します。


Windowsインストールの場合:

パッケージのインストールのためにsetup.pyを実行している間、Python 2.7はインストールされているVisual Studio 2008を検索しVS90COMNTOOLSますsetup.py。を呼び出す前に環境変数に正しいパスを設定することにより、Pythonに新しいVisual Studioを使用させることができます。

インストールされているVisual Studioのバージョンに基づいて、次のコマンドを実行します。

  • Visual Studio 2010(VS10): SET VS90COMNTOOLS=%VS100COMNTOOLS%
  • Visual Studio 2012(VS11): SET VS90COMNTOOLS=%VS110COMNTOOLS%
  • Visual Studio 2013(VS12): SET VS90COMNTOOLS=%VS120COMNTOOLS%
  • Visual Studio 2015(VS14): SET VS90COMNTOOLS=%VS140COMNTOOLS%

警告:下記のように、Pythonモジュールをコンパイルしようとしている場合、この回答は機能しません。

詳細については、WindowsでのPython 2.7用のlxmlのビルドを参照してください。


21
それは私のためにした:(
fmuecke

8
@Gili:この問題は変数内のスペースが原因であるようです。引用符で囲んでみてください。私にとっては%VS100COMNTOOLS%= "C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ Tools"
legends2k

7
PythonはVS2008に依存しているため、多くの場合これは機能しません。この答えを見て:stackoverflow.com/questions/6551724/...
shezi

182
警告!!!これは間違った答えです。あなたはないはず 1は、これら2つ(のバージョン)としてPython自体をコンパイルするために使用されることをコンパイラ異なる(のバージョン)を使用してPythonのC拡張コンパイルいかなる状況下でもコンパイラはおそらく、互換性のないCランタイム・ライブラリーを持つことになります。詳細については、この回答を参照してください。
Piotr Dobrogost 2013

72
無料のVisual C ++ 2008 Express Editionはgo.microsoft.com/?linkid=7729279からダウンロードできます。これにより、インストール中にVS90COMNTOOLS環境変数が設定され、互換性のあるコンパイラーでビルドされます。
Eric Smith、

225

私は解決策を見つけました。「amara」をインストールすると、まったく同じ問題とエラーが発生しました。mingw32をインストールしましたが、distutilsを設定する必要がありました。

  1. Python 2.6がすでにインストールされています。
  2. にmingw32をインストールしました C:\programs\mingw\
  3. MINGW32のbinディレクトリには、ご使用の環境変数に追加します。APPEND c:\programs\MinGW\bin;へのPATHを
  4. 次の場所にあるdistutils.cfgファイルを編集(存在しない場合は作成)C:\Python26\Lib\distutils\distutils.cfgします。

    [build]
    compiler=mingw32
  5. 実行しeasy_install.exe amaraます。

新しいを開いて、環境が設定されていることを確認しますcmd.exe


45
これはPython2.6ではうまく機能しますが、何らかの理由でPython2.7で機能させることができません。パッケージソースをダウンロードして 'python setup.py install --compile = mingw32'を使用してインストールすると機能しますが、何らかの理由でeasy_installまたはpipを使用してもvcvarsallを見つけようとします。
ジョナサンハートレー

2
私は最終的に追加することによって、Pythonでインストールするscikits.image(x、y)が2.7を得たC:\msysgit\mingw\mingw32\binし、C:\msysgit\mingw\binユーザーのPATHにし、実行する前に、スパイダーを再起動しpip install、再び
endolith

20
必要はありません今までので、環境変数の変更を再起動するには。新しいcmd.exeプロセスを開くだけで十分です。
Tomalak 2012年

11
私はまだこれを修正できませんでした。これはエラーです:gcc: error: unrecognized command line option '-mno-cygwin' error: Setup script exited with error: command 'gcc' failed with exit status 1easy_install.exe amara
ユーザー

5
@user、あなたはこのファイルを開くべきです:C:\Python27\Lib\distutils\cygwincompiler.pyそして–mno-cygwinそれからのすべての出現を削除してください。これは、GCCの最近のバージョンで–mno-cygwinオプションが削除されており、そこにあるべきではないためです。
Zeinab Abbasimazar 2014

220

コンパイル済みバージョンはhttp://www.lfd.uci.edu/~gohlke/pythonlibs/からインストールできます


15
ヒント:この答えeasy_install binary_installer_built_with_distutils.exeに従って、virtualenvで実行することにより、virtualenvのこのサイトからパッケージをインストールできます
yangzh 2013

14
すべてのPython Windows
開発者は

1
wheel convert ....exeこれらのインストーラーを使用して、好きなときにいつでもpipでインストールすることもできます。
Zooba 2014

3
より正確には、lfd.uci.edu / 〜gohlke / pythonlibs / #mysql-pythonとダウンロードしたら、ターミナルを管理者として開いて実行しますpython -m pip install <filename>
2016年

神のホリーの母、これはその場です。魅力的な作品、TY :)
アミール

162

mingwの代わりにVisual Studio C ++でコンパイルしたい場合...

  1. 実行python.exeすると、コンパイルされたVC ++のバージョンが表示されます(以下の例を参照)。

    ある重要な Pythonのは、以降でコンパイルされたことのVisual C ++コンパイラの対応バージョンを使用するdistilutilsget_build_version防止は、(バージョンを混合ピョートルの警告ごとに)。

    • 黄色(上)は、MSC v.1500(Visual Studio C ++ 2008)でコンパイルされたPython 2.7です。
    • 赤(下)は、MSC v.1600(Visual Studio C ++ 2010)でコンパイルされたPython 3.4.1です。

    MSC v.1500でコンパイルされたPython 2.7およびMSC v.1600でコンパイルされたPython 3.4.1を示すコマンドラインの例

  2. 下の表[1]を使用して、内部VC ++バージョンを対応するVisual Studioリリースと一致させます。

    MSC v.1000 -> Visual C++ 4.x        
    MSC v.1100 -> Visual C++ 5          
    MSC v.1200 -> Visual C++ 6          
    MSC v.1300 -> Visual C++ .NET       
    MSC v.1310 -> Visual C++ .NET 2003  
    MSC v.1400 -> Visual C++ 2005  (8.0)
    MSC v.1500 -> Visual C++ 2008  (9.0)
    MSC v.1600 -> Visual C++ 2010 (10.0)
    MSC v.1700 -> Visual C++ 2012 (11.0)
    MSC v.1800 -> Visual C++ 2013 (12.0)
    MSC v.1900 -> Visual C++ 2015 (14.0)
    MSC v.1910 -> Visual C++ 2017 (15.0)
    MSC v.1911 -> Visual C++ 2017 (15.3)
    MSC v.1912 -> Visual C++ 2017 (15.5)
    MSC v.1913 -> Visual C++ 2017 (15.6)
    MSC v.1914 -> Visual C++ 2017 (15.7)
    MSC v.1915 -> Visual C++ 2017 (15.8)
    MSC v.1916 -> Visual C++ 2017 (15.9)   
  3. 前の手順からVisual Studio C ++の対応するバージョンをダウンロードしてインストールします。
    VC ++の特定のバージョンに関する追加の注意事項を以下に示します。

    Visual Studio C ++ 2008に関する注意事項

    32ビットコンパイラのみの場合Visual Studio C ++ 2008 Express Editionをダウンロードしてください。

    64ビットコンパイラ[2] [3]の場合は、Windows SDK for Windows 7および.NET Framework 3.5 SP1をダウンロードしてください。

    • Developer Tools >> Visual C++ Compilersそれ以外の場合は不要なSDKツールをインストールすることで時間とディスク領域を節約する以外は、すべてのチェックを外します。

    Visual Studio C ++ 2010に関する注意事項

    Microsoftによると、Visual Studio 2010 SP1をインストールした場合、VC ++のコンパイラとライブラリが削除されている可能性があります。
    その場合は、Visual C ++ 2010 SP1 Compiler Updateをダウンロードしてください

    Visual Studio C ++ 2015に関する注意事項

    Visual Studio IDEが必要ない場合は、Visual Studio C ++ 2015 Build Toolsをダウンロードしてください。

    Visual Studio C ++ 2017に関する注意事項

    Visual Studio IDEが必要ない場合は、Visual Studio 2017用のビルドツールをダウンロードしてください。

    提案:32ビットと64ビットの両方のPythonがインストールされている場合は、virtualenvを使用して個別のPython環境を作成することもできます。これにより、パスをいじらずに、使用するPythonバージョンを選択できます。使用する。

@srodriguexによると、この回答に従ってPythonが検索している場所にいくつかのバッチファイルをコピーする代わりに、手動でバッチファイルをロードすること(ステップ4〜6)をスキップできる場合があります。それでも問題が解決しない場合は、次の手順を実行してください。

  1. を開く cmd.exe

  2. C拡張機能を必要とするものをインストールする前に、次のバッチファイルを実行して、VC ++コンパイラの環境をセッションにロードします(環境変数、コンパイラへのパスなど)。

    実行:

    • 32ビットコンパイラ:

      :32ビットWindowsのインストールではC:\Program Files\、予想どおりのインストールになります

      "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"

    • 64ビットコンパイラ:

      "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars64.bat"

      :はい、ネイティブ64ビットコンパイラはに含まれていProgram Files (x86)ます。理由を聞かないで。
      また、あなたはどのような違いの間で疑問に思っている場合vcvars64.batと、vcvarsx86_amd64.bat以上の重要な違いamd64x86_amd64、前者はネイティブの64ビットコンパイラツール用であり、後者は32ビットのWindowsインストール上で実行できる64ビットのクロスコンパイラです。

    アップデート:
    何らかの理由であなたが取得している場合はerror: ... was unexpected at this time.どこ...の文字のいくつかのシリーズです、そしてあなたは、パス変数は、余分な引用や浮遊文字などの余分な文字を持っていないことを確認する必要があります。バッチファイルは、そもそも意味がわからない場合、セッションパスを更新できません。

  3. 問題がなければ、VC ++のバージョンと実行したコマンドに応じて、次のいずれかのメッセージが表示されます。

    32ビットのコンパイラツールの場合:
    Setting environment for using Microsoft Visual Studio 20xx x86 tools.

    64ビットコンパイラツールの場合:
    Setting environment for using Microsoft Visual Studio 20xx x64 tools.

  4. さて、経由でセットアップを実行しますpython setup.py installか、pip install pkg-name

  5. 惑星が正しく調整されてVC ++が協力できることを願って、指を交差させます。


あなた 64ビットにまっすぐに移動する苦痛を経験するほど十分に推奨することはできません。4GB以上のアドレス空間が必要になるのは時間の問題です。私は32ビットに移行した後の苦痛な経験から話しました。それははるかに簡単で、依存関係や64ビットへの移行を含むすべてをアンインストールする必要があったからです。ほぼ週末。
Thomas Browne 14

1
繰り返しますが、そのようなはるかに大きなタスクのためにPythonを使用しなければならない人がどれほどいるのかを忘れています。そして、@ ThomasBrowne、それは経験の痛みと不必要な悪であったと確信しています。調べています。うまくいけば、何かを見つけることができます。主な問題は、Visual Studio C ++ 2008 Expressに64ビットコンパイラが付属していないことでしたが、ここのどこかにあると思います。
ジョシュボーデン

必要に応じて64ビットコンパイラも入手する方法をカバーする詳細情報で更新しました。
Josh Bowden

私の場合、上記のステップ1に従い、この回答の残りをスキップしました。これで、.batを実行する煩わしさを回避してパッケージをインストールできます。
srodriguex

Pythonは、64ビットのコンパイラツールは、それが探していることを使用してPATHにロードされ得ることを想定しているよう@srodriguexだけでなく、その場合には、それが見える...\VC\bin\vcvarsamd64.bat...\VC\bin\amd64\vcvarsamd64.bat
Josh Bowden

73

どうしたの?Pythonモジュールは、CまたはC ++で部分的に記述できます(通常、速度を上げるため)。そのようなパッケージをPip(またはsetup.py)でインストールしようとすると、ソースからそのC / C ++をコンパイルする必要があります。箱から出して、PipはコンパイラMicrosoft Visual C ++がインストールされていることを勇敢に想定します。持っていない場合は、「エラー:vcvarsall.batが見つかりません」という不可解なエラーメッセージが表示されます。

規定された解決策は、Microsoft Visual C ++またはMinGW(オープンソースプロジェクト)のいずれかのC / C ++コンパイラをインストールすることです。ただし、どちらのインストールと構成も非常に困難です。(編集2014:マイクロソフトはPython 2.7用の特別なC ++コンパイラを公開しました)

最も簡単な解決策は、人気のPythonパッケージにChristoph GohlkeのWindowsインストーラー(.msi)を使用することです。彼はPython 2.xと3.x、32ビットと64ビットのインストーラーをビルドしています。これらはhttp://www.lfd.uci.edu/~gohlke/pythonlibs/からダウンロードできます


あなたも「エラー:vcvarsall.batを見つけることができませんが」と思うならludicrously不可解と役に立たないメッセージで、その後でバグにコメントを喜ばhttp://bugs.python.org/issue2943より有用とUSER-と交換しますフレンドリーなメッセージ。

比較のために、RubyにはパッケージマネージャーGemが同梱されており、準公式のC / C ++コンパイラであるDevKitを提供しています。それなしでパッケージをインストールしようとすると、次の役立つ親切で役立つメッセージが表示されます。

ビルドツールを含めるようにPATHを更新するか、http: //rubyinstaller.org/downloadsからDevKitをダウンロードして、http://github.com/oneclick/rubyinstaller/wiki/Development-Kitの指示に従ってください

あなたはhttps://stackoverflow.com/a/13445719/284795で Pythonのパッケージングについての長い怒りを読むことができます


どのようにしてpipを使用して、このコンパイル済みの実行可能ファイルを仮想環境にインストールできますか?
Shailen 2013

@shailenTJいい質問です。私はそれをやったことがないが、stackoverflow.com / a / 5442340/284795を
大佐パニック

これは、私が認識している最良/最も簡単なソリューションでした。ありがとう。
user1477388 2013

そのEdit 2014が私にとって最良の答えです。見落としがちな手順:でsetuptoolsバージョン6.0以上に更新してくださいpip install setuptools --upgrade
15年

64

Pythonのビルドに使用されるコンパイラと互換性のあるMicrosoftコンパイラをインストールする必要があります。つまり、Visual C ++ 2008(またはそれ以降、多少の調整が必要)が必要です。

マイクロソフトは現在、同梱のコンパイラとヘッダを提供するだけで思い出に残るURLで、Python拡張をコンパイルできるようにするには:

Python 2.7用Microsoft Visual C ++コンパイラ

http://aka.ms/vcpython27

これは比較的小さなパッケージです。ダウンロード用に85MB、管理者権限なしでインストール可能、再起動は不要。名前は少し誤解を招くものです。コンパイラは、Python 2.7だけでなく、もともとVisual C ++ 2008でコンパイルされたすべてのPythonバージョンで動作します。

Pythonのインタラクティブプロンプトまたはprintを起動する場合sys.versionは、MSCバージョン文字列を探します。もしそうなら、MSC v.1500あなたはこのツールを使用することができます。

元の発表distutilsのリストに

Microsoftは、人々がWindows上でC拡張モジュールを簡単に構築および配布できるようにするために、Python 2.7用のコンパイラパッケージをリリースしました。Python 2.7(別名VC9)用のMicrosoft Visual C ++コンパイラは、http://aka.ms/vcpython27から入手できます。

このパッケージには、Python 2.7 32ビットおよび64ビット用のC拡張モジュールをビルドするために必要なすべてのツールとヘッダーが含まれています(一部の拡張モジュールには、OpenSSLやlibxml2など、含まれていないサードパーティの依存関係が必要です)。Visual C ++ 2008でビルドされた他のバージョンのPythonもサポートされているため、「Python 2.7」はただ宣伝しているだけで、2.6および3.2で正常に動作します。

setuptools6.0以降がインストールされている必要があることに注意してください(ダウンロードページのシステム要件に記載されています)。インストールするプロジェクトはを使用する必要があります。使用setuptools.setup()しないdistutils場合、自動検出は機能しません。

Microsoftは、自動化されたスクリプトが簡単にURLを参照できるように、URLを安定させたいと述べています。


2
私の他のコメントのとおり、でsetuptools最新であることを確認できますpip install setuptools --upgrade
15年

関連するロジックがである私はなぜ問題に見えたsetuptoolsのではなくdistutils-すべての後に、モジュールを構築する中核機能であり、それは、関連するコードが、それ以前のバージョンを持っています。以下のように見えるdistutilsメンテナはちょうどすべての可能なMSSDKのバリエーションをサポートする上であきらめ、その上にこの仕事をダンプsetuptoolsより切望していた同僚。
ivan_pozdeev

1
@ivan_pozdeev:はPythonのリリースサイクルに含まsetuptoolsれるよりもはるかに頻繁にリリースすることもdistutilsできます。そしてdistitutils確かに、ある種のメンテナンスモードに入り、新しいシステムでの置き換えが予定されています。その仕事は代わりに行き詰まりました。
Martijn Pieters

cythonはdistutilsを使用します。distutilsをサルパッチするsetuptoolsをインポートする必要があります:github.com/cython/cython/wiki/CythonExtensionsOnWindows
denfromufa

54

私はこれと同じ問題を抱えていたので、ここで私の話をします。同じ問題を抱えている他の人を助け、私が費やした数時間を節約できることを願っています。

Windows 7のボックスにmingw(g ++(GCC)4.6.1)とpython 2.7.3があり、PyCryptoをインストールしようとしています。

setup.py installを実行すると、すべてこのエラーで始まりました。

error: Unable to find vcvarsall.bat

選択したコンパイラとしてmingwを指定することで、エラーをグーグルした後、簡単に解決できます。

setup.py install build --compiler=mingw32

問題は、別のエラーが発生したことです。

configure: error: cannot run C compiled programs.

私のアンチウイルスが、新しくコンパイルされた.exeの実行をブロックしていたことがわかりました。アンチウイルスの「常駐シールド」を無効にして、次のエラーに進みました。

cc1.exe: error: unrecognized command line option '-mno-cygwin' 
error: command 'gcc' failed with exit status 1

これで解決しました。「少し古いバージョンのMinGWをインストールするか、Pythonディレクトリのdistutils \ cygwinccompiler.pyを編集して、-mno-cygwinのすべてのインスタンスを削除します。」(ここから)

これでようやく作業を開始できます。


7
また、PythonライブラリのMinGW互換バージョンも必要です。詳細については、eli.thegreenplace.net / 2008/06/28 /…を参照してください
ギリ

ツイストとターン:D
Xilpex

23

VCコンパイラを探しているように見えるので-c mingw32、msysがあるので、コンパイラのタイプをで言及しようとすることができます

python setup.py install -c mingw32

16
:ただ作品があることを、コマンドをclairifyすることpython setup.py build --compiler=mingw32が続くpython setup.py install
エミールStenström

python setup.py build --compiler = mingw32を実行した後、ImportErrorが返されます:CythonがAnacondaの下にインストールされている間、Cython.Distutilsという名前のモジュールはありません。助言がありますか?
セレンディピティ2015年

20

私はpython 2.73とwindows 7を持っています。私のために働いた解決策は次のとおりでした:

  1. mingw32のbinディレクトリを環境変数に追加:PATHを追加C:\programs\mingw\bin;
  2. 次の場所にあるdistutils.cfgを作成しましたC:\Python27\Lib\distutils\distutils.cfg

    [build]
    compiler=mingw32

MinGWが-mno-cygwinフラグを認識しないようにするために、C:\ Python27 \ Lib \ distutils \ cygwincompiler.py行322から326のフラグを削除すると、次のようになります。

  self.set_executables(compiler='gcc -O -Wall',
                         compiler_so='gcc -mdll -O -Wall',
                         compiler_cxx='g++ -O -Wall',
                         linker_exe='gcc',
                         linker_so='%s %s %s'
                                    % (self.linker_dll, shared_option,
                                       entry_point))

15

setup.pyインストールしようとしているパッケージのファイルを調べます。古いパッケージの場合は、distutils.core.setup()ではなくインポートされている可能性がありますsetuptools.setup()

私はこれらに(2015年に)これらの要因を組み合わせて実行しました:

  1. Microsoft Visual C ++ Compiler for Python 2.7(http://aka.ms/vcpython27から)

  2. を使用する古いパッケージ distutils.core.setup()

  3. python setup.py buildを使用するのではなく、実行しようとしていますpip

最近のバージョンの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にインストールする場合は、ビルドする前にアクティブ化してください。


<code> python setup.py build </ code>の代わりに<code> pip </ code>を使用してパッケージをビルドすることもできます
aronadaal

9

多分誰かが興味を持っているかもしれません、以下はpy2exeパッケージのために私のために働きました。(私は64ビットのWindows 7と移植可能なpython 2.7、Windows 7および.NET Framework 4用のWindows SDKを備えたVisual Studio 2005 Expressを持っています)

set VS90COMNTOOLS=%VS80COMNTOOLS%

次に:

python.exe setup.py install

いいえ、そのとおりです。何が起こったのかわかりません。元のコメントを削除します。
Dave Challis 2013

1
非常に便利!!私の場合、「set VS90COMNTOOLS =%VS110COMNTOOLS%」に設定しました。
jrvidotti 2013年

@Exzile:はい、同じコマンドプロンプトセッションでこれらのコマンドを入力します
Stefano Fenu

こんなことしないで!!! 詳細については、この回答を参照してください。
匿名の

8

私はpython 3.4 64ビットバージョンでこの問題を修正する方法を理解するためにほぼ2日を費やしました:Python 3.4.3(v3.4.3:9b73f1c3e601、2015年2月24日、22:44:40)[MSC v.1600 64ビット(AMD64 )] win32

ソリューション1、ハード:(これを読む前に、最初に以下のソリューション2を読んでください)最後に、これが私を助けました:

  1. Visual C ++ 2010 Expressをインストールする
  2. Windows 7用のMicrosoft Windows SDK v7.1をインストールします
  3. 手動でファイルの作成vcvars64.batC:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64含まれているCALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64あなたは、あなたがインストールされている場所に応じて、または他のパスを
  4. (これはオプションのようです)Microsoft Visual Studio 2010 Service Pack 1Windows SDK 7.1用のMicrosoft Visual C ++ 2010 Service Pack 1 Compiler Updateと一緒にインストールします。
  5. その後、私は試みましpip install numpyたが、次のエラーを受け取りました:

    File "numpy\core\setup.py", line 686, in get_mathlib_info
    raise RuntimeError("Broken toolchain: cannot link a simple C program")
    RuntimeError: Broken toolchain: cannot link a simple C program

    私はこのhttps://stackoverflow.com/a/23099820/4383472に従って変更mfinfoNoneましたC:\Python34\Lib\distutils\msvc9compiler.py

  6. 最後にpip install numpyコマンドの後、私のavastアンチウイルスがインストールプロセスに干渉しようとしましたが、すぐに無効にしました

numpyのコンパイルに非常に長い時間がかかりました。エラーが発生したとさえ思っていましたが、最終的にはすべて問題ありませんでした。

ソリューション2、簡単:( このアプローチはすでに高い投票数の回答で言及されていることはわかっていますが、本当に簡単なので繰り返すことにします)この作業をすべて終えた後、私にとって最善の方法はすでに使用することだと理解しましたhttp://www.lfd.uci.edu/~gohlke/pythonlibs/からのコンパイル済みバイナリ。このサイトに含まれていないパッケージ(またはパッケージのバージョン)が必要になる可能性はほとんどありません。この方法により、インストールプロセスも大幅に高速化されます。たとえば、次のようにインストールしnumpyます。

  1. numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whlそのサイトからのダウンロード(Python 3.4 64ビットの場合)
  2. コマンドプロンプトまたはpowershellで、pip pip install numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl(またはコマンドプロンプトを開く方法に応じてファイルへのフルパス)でインストールします。

numpy‑1.9.2 + mkl‑cp34‑none‑win_amd64.whl-上記のリンクでこのファイルが見つかりません。
Amresh Giri

7

Python 2.7の下でWindows 10でpysphを実行したいのですが、vcvarsall.batが見つかりませんでした(distutilsから)

私の解決策は次のとおりでした:

Python 2.7用のMicrosoft Visual C ++をインストールします(@Michaelを推奨)

Windows 10でインストールされました(私のユーザー名はAndreasです):

C:\Users\Andreas\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0

環境変数VS90COMNTOOLSをVisual C ++ for Python 2.7のインストールパスに設定します(上記のパスを参照)。

それでも機能しない場合は、モジュールを変更してください

C:/Python27/lib/distutils

ファイルmsvc9compiler.py。その中で関数find_vcvarsallを見つけ、次の変更を行います。

次の行を置き換えます。

productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")

productdir = os.path.join(toolsdir)

私の場合、これはvcvarsall.batが存在する場所です(インストールのvcvarsall.batがどこにあるかを確認してください)。


興味深いことに%userprofile%\Appdata\Local\Programs\Common、私にとっては空です。
ブライスギンタ2016年

Python 2.7用のMicrosoft Visual C ++をインストールした後でも?
チーフエンヌ2016年

7

python 3.5にnumpyライブラリをインストールしようとしたときにこの問題が発生しました。解決策は、VS2015をインストールすることです。私はVS2008、2012、2013を持っていましたが、どれもpython 3.5と互換性がありません。どうやら新しいバージョンのPythonは新しいバージョンのVSに依存しています。

また、C ++共通ツールがVisual Studioと共にインストールされていることも確認してください。

ここに画像の説明を入力してください


6

上記のすべての回答を試したところ、すべてが機能しないことがわかりました。これは、おそらくWindows 8を使用していて、Visual Studio 2012をインストールしていたためです。この場合は、これを実行します。

vcvarsall.batファイルは次の場所にあります。 C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC

ファイルを選択してコピーするだけです。

次に、このディレクトリに移動します。 C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools

ファイルを貼り付けます。そして、すべてがうまくいくはずです。


すべてがうまくいくわけではありませんが、私はあなたの答えに従いましたが、それでも同じエラーが発生します。
Stupid_Intern 2015

6

無料のVisual C ++ 2008 Express Editionはhttp://go.microsoft.com/?linkid=7729279からダウンロードできます。これにより、インストール中にVS90COMNTOOLS環境変数が設定され、互換性のあるコンパイラでビルドされます。

:@PiotrDobrogostコメントで述べたように、この他の質問に対する彼の答えは、Visual C ++ 2008でビルドに右のことですが、これは、Visual Studioの新しいバージョンへのPythonの移動のWindows用のビルドとして変更することができた理由について詳細に入るビルlxmlのWindows上のPython 2.7


また、他のバージョンがインストールされていないことを確認してください。私はこれで苦労しました。コンピュータを再フォーマットし、このバージョンだけをインストールしました。VSの複数のバージョンを削除すると、同じくらい時間がかかります。
jmunsch 2014年

6

Windows 7 x64Python 3.4.1を使用してこの問題がありましたが、残念ながら、必要なパッケージには、使用できる適切なexeまたはホイールがありませんでした。このシステムには、いくつかの「回避策」が必要です。詳細については、以下で説明します(下部のTLDR)。

上記のJaxrtechの回答の情報を使用して、Visual Studio C ++ 2010(sys.versionはMSC v.1600を返す)が必要だと判断したので、彼の回答のリンク(http://go.microsoft)からVisual C ++ 2010 Expressをインストールしました。.com /?linkid = 9709949。私はすべてをアップデートでインストールしましたが、以下を読むことができるように、これは間違いでした。この時点では、元のバージョンのExpressのみをインストールする必要があります(何も更新されません)。

vcvarsall.batが存在するようになりましたが、パッケージのインストール中に新しいエラーが発生しましたquery_vcvarsall raise ValueError(str(list(result.keys())))ValueError: [u'path']Python 2.7用のCモジュールのビルド/インストール中のエラーなど、このエラーに関する他のスタックオーバーフローの質問があります

その回答から、2010 Expressは32ビットコンパイラのみをインストールすることを決定しました。64ビット(およびその他の)コンパイラを入手するには、Windows 7.1 SDKをインストールする必要があります。http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspxを参照してください

これはインストールされませんが、インストーラーはエラーを返しましたinstallation failed with return code 5100。次のリンクで解決策を見つけました:http : //support.microsoft.com/kb/2717426。つまり、x86およびx64の新しいバージョンのMicrosoft Visual C ++ 2010再頒布可能パッケージがインストールされている場合、それらはSDKインストーラーのバージョンと競合するため、最初にアンインストールする必要があります。

次にSDKがインストールされましたが、vcvars64.batがにC:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\binもそのサブフォルダーにもまだ存在しないことに気付きました。vcvarsall.batはvcvars64バッチファイルを実行するため、このファイルがないと、Pythonパッケージはインストールされません(このときに表示されるエラーを忘れていました)。

その後、いくつかの手順をここに見つけました:http : //www.cryptohaze.com/wiki/index.php/Windows_7_Build_Setup#Download_VS_2010_and_Windows_SDK_7.1 指示に従って、すでにExpressおよび7.1 SDKをインストールしていたため、SDK 7.1 SP1をインストールし、ヘッダーファイルの欠落の修正。次に、コンテンツを含むvcvars64.batを手動で作成しましたCALL setenv /x64。これらの指示をすべてここに貼り付けて、迷子にならないようにします。

ステップ1は、Visual Studio Express 2010をダ​​ウンロードすることです。

http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express から始めるのが良いでしょう。インストーラーをダウンロードして実行します(vc_web.exe)。SQL 2008の追加ダウンロードは必要ありません。

また、完全にサポートされていない32ビットのみのビルドを実行する場合を除き、64ビットコンパイラにはWindows SDK(現在は7.1)も必要です。

http://www.microsoft.com/en-us/download/details.aspx?id=8279は、これをダウンロードするための良い出発点です。ダウンロード時にwinsdk_web.exeを実行する必要があります。

ここでのデフォルトのインストールは問題ありません。

最後に、Windows SDK 7.1 SP1アップデートをダウンロードしてインストールします。http//www.microsoft.com/en-us/download/details.aspx?id = 4422

また、欠落しているヘッダーファイル、VS2010 SP1を修正します。 http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5

そして、血まみれの地獄、VS2010 Expressの不足しているバッチファイルを修正します。これは実にばかげています。

C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64で、以下を使用して「vcvars64.bat」を作成します(管理者として実行している必要があります):

CALL setenv / x64

私のpythonパッケージはまだインストールされませんでした(エラーを思い出せません)。次に、特別なSDK 7.1コマンドプロンプトを使用するためのいくつかの手順(以下にコピー)を見つけました。https://mail.python.org/pipermail/distutils-sig/2012-February/018300.htmlを参照してください。

この質問は気にしないでください。ここの誰かがメニューのこの項目に気づきました:スタート->すべてのプログラム-> Microsoft Windows SDK v7.1-> Windows SDK 7.1コマンドプロンプト

これは、コンパイラーの作業環境をセットアップするように見えるバッチジョブを実行します。そのプロンプトから、「setup.py build」または「setup.py install」と入力できます。

指示に従ってWindows SDK 7.1コマンドプロンプトを開き、それを使用してpythonパッケージでeasy_installを実行しました。そしてついに成功!


TLDR ;

  1. Visual Studio Express 2010をインストールします(できれば、更新された再頒布可能パッケージまたはSQLサーバーなしで)。
  2. Windows 7.1 SDKをインストールする
  3. Instal SDK 7.1 SP1アップデート、およびVS2010 SP1ヘッダーファイルの修正(この手順は必要ない場合があります)。
  4. C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.batコンテンツを使用して手動で作成するCALL setenv /x64
  5. [スタート]-> [すべてのプログラム]-> [Microsoft Windows SDK v7.1]-> [Windows SDK 7.1コマンドプロンプト]をクリックして、特別なx64コマンドプロンプトを開きます。このプロンプトは、python / easy_install / pip / etc(virtual_envsを含む)で使用できます。

4

以下の手順でこの問題を解決しました。cython拡張を使用してセットアップを作成しようとしました。

  1. Python 2.7用のMicrosoft Visual C ++コンパイラをインストールする
  2. デフォルトのインストール場所は@ C:\ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Pythonこれは実際に問題を修正する可能性があります。続行する前に一度テストしてください。
  3. 失敗した場合は、VC ++ for python vcvarsall.batファイルの場所を確認してください
  4. メモ帳でdistutilsパッケージのmsvc9compiler.pyファイルを開きます。
  5. 私の箱では、これは@ C:\ Anaconda2 \ Lib \ distutils \ msvc9compiler.pyこのファイルのfind_vcvarsall関数でした。バージョン引数を出力して、VCのバージョンを確認します。Python 2.7の場合、9.0になる可能性があります
  6. C:\ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python \ 9.0 \ VC \ binを指す環境変数VS90COMNTOOLSを作成します
  7. 何らかの理由でdistutilsはvcvarsall.batファイルがVC dir内にあると想定していますが、VC ++ for Pythonツールはそれを9.0のルートに持っています。これを修正するには、path.joinから「VC」を削除します(247行目付近)。

    #productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC") productdir = os.path.join(toolsdir, os.pardir, os.pardir)

上記の手順で問題が解決しました。


私は、上記の手順のリンクをたどる上でのエラーをリンク取得しています:エラーLNK2001:ビルドinit__init__未解決の外部シンボル\ temp.win-amd64-2.7 \ Release_ init_の.lib:致命的なエラーLNK1120:1未解決の外部エラー:コマンド「C:\\ユーザー\\ \\ ma306477のAppData \\ \\ローカルプログラム\\共通\\マイクロソフト\\ ++ 9.0 \\ VC \\ビン\\ AMD64 \\ LINK.EXE」終了状態1120で失敗しました\\ Python用のVisual C
マニッシュプラサド

3

私は多くのソリューションを試しましたが、Microsoft Visual Studio 2008 Express C ++のインストールという1つだけがうまくいきました。

この問題は、Cで記述されたPython 2.7モジュール(MS VSで他の問題があるyEnc)で発生しました。Python 2.7は2010ではなくMS VS 2008バージョンでビルドされていることに注意してください!

MSがVS 2010を宣伝しているため、無料であるにもかかわらず、見つけるのは非常に困難です。それでも、MSDNの公式の非常に直接的なリンクはまだ機能しています。ダウンロードリンクについては、https//stackoverflow.com/a/15319069/2227298を確認してください


はい、最善の方法はVS2008をインストールすることです。
pylover 2013

3

mingwがインストールされている場合

pip install --global-option build_ext --global-option --compiler=mingw32 packagename

動作し、Microsoftの代わりにmingwコンパイラを使用してpipをビルドします。詳細については、https://github.com/pypa/pip/issues/18をご覧ください(最後の投稿)。



3

2016年にこれを解決する最も簡単な方法は、Chocolateyをインストールしてからvcpython27パッケージをインストールすること です。Powershellを開きます。

> iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
> choco install python2 -y
> choco install vcpython27 -y


2

同じ問題が発生し、現在解決しています。

「Google」から「Microsoft Visual C ++ Compiler for Python 2.7」をインストールする必要があると言われました。ツールだけでなくVisual C ++ 2008 Reditributableもインストールしましたが、役に立ちませんでした。次に、Visual C ++ 2008 Express Editionをインストールしようとしました。そして問題はなくなりました!

Visual C ++ 2008 Express Editionをインストールしてみてください。


2

呼び出し元import setuptoolsのVisual Studioとの互換性を強制する意志モンキーパッチdistutilsのを。vcvars32.bat手動で呼び出すと、仮想環境がセットアップされ、コンパイラーがスローするその他の一般的なエラーが防止されます。VS 2017の場合、ファイルは次の場所にあります

「C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ VC \ Auxiliary \ Build \ vcvars32.bat "

これは、.pyxファイルを.pydにすばやくコンパイルするために使用するセットアップスクリプトです(注:サードパーティのモジュールsend2trashを使用しています

# cython_setup.py
import sys, os, time, platform, subprocess
from setuptools import setup, find_packages
from Cython.Build import cythonize
from traceback import format_exc

# USAGE:
#
#   from cython_setup import run
#   run(pyx_path)

# vcvars = r"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat"

# NOTE: to use visual studio 2017 you must have setuptools version 34+
vcvars = r"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars32.bat"


def _build_ext():
    try:
        pyx_path = sys.argv.pop(-1)
        pyx_path = os.path.abspath(pyx_path)
        if not os.path.exists(pyx_path):
            raise FileNotFoundError(f"{pyx_path} does not exist")
        project_name = sys.argv.pop(-1)
        os.chdir(os.path.abspath(os.path.dirname(pyx_path)))

        print("cwd: %s" % os.getcwd())
        print(os.path.abspath("build"))
        setup(
            name=project_name,
            # cmdclass = {'build_ext': build_ext},
            packages=find_packages(),
            # ext_modules=cythonize(extensions)
            ext_modules=cythonize(pyx_path,
                                  compiler_directives={'language_level': 3, 'infer_types': True, 'binding': False},
                                  annotate=True),
            # include_dirs = [numpy.get_include()]
            build_dir=os.path.abspath("build")
        )
    except:
        input(format_exc())


def retry(func):
    def wrapper(*args, **kw):
        tries = 0
        while True:
            try:
                return func(*args, **kw)
            except Exception:
                tries += 1
                if tries > 4:
                    raise
                time.sleep(0.4)

    return wrapper


@retry
def cleanup(pyx_path):
    from send2trash import send2trash
    c_file = os.path.splitext(pyx_path)[0] + ".c"
    if os.path.exists(c_file):
        os.remove(c_file)

    if os.path.exists("build"):
        send2trash("build")


def move_pyd_files(pyx_path):
    pyx_dir = os.path.dirname(pyx_path)
    build_dir = os.path.join(pyx_dir, "build")
    if not os.path.exists(build_dir):
        raise RuntimeError(f"build_dir {build_dir} did not exist....")
    found_pyd = False
    for top, dirs, nondirs in os.walk(build_dir):
        for name in nondirs:
            if name.lower().endswith(".pyd") or name.lower().endswith(".so"):
                found_pyd = True
                old_path = os.path.join(top, name)
                new_path = os.path.join(pyx_dir, name)
                if os.path.exists(new_path):
                    print(f"removing {new_path}")
                    os.remove(new_path)
                print(f"file created at {new_path}")
                os.rename(old_path, new_path)
    if not found_pyd:
        raise RuntimeError("Never found .pyd file to move")

def run(pyx_path):
    """
    :param pyx_path:
    :type pyx_path:
    :return: this function creates the batch file, which in turn calls this module, which calls cythonize, once done
    the batch script deletes itself... I'm sure theres a less convoluted way of doing this, but it works
    :rtype:
    """
    try:
        project_name = os.path.splitext(os.path.basename(pyx_path))[0]
        run_script(project_name, os.path.abspath(pyx_path))
    except:
        input(format_exc())


def run_script(project_name, pyx_path):
    dirname = os.path.dirname(pyx_path)
    # ------------------------------
    os.chdir(dirname)
    if os.path.exists(vcvars):
        #  raise RuntimeError(
        # f"Could not find vcvars32.bat at {vcvars}\nis Visual Studio Installed?\nIs setuptools version > 34?")
        subprocess.check_call(f'call "{vcvars}"', shell=True)

    cmd = "python" if platform.system() == "Windows" else "python3"
    subprocess.check_call(f'{cmd} "{__file__}" build_ext "{project_name}" "{pyx_path}"', shell=True)
    move_pyd_files(pyx_path)
    cleanup(pyx_path)


if len(sys.argv) > 2:
    _build_ext()

実際、インポートsetuptoolsは、cythonコンパイルの場合にも役立ちます。
Basj 2018年

もう少し詳しく説明してもらえますか?vcvars32.batを手動で呼び出す方法?私はシトンのコンパイルを持っている
ジューン・ワン

2

このリンクを使用して、Visual C ++ 2015ビルドツールをダウンロードしてインストールしますVisual C ++ 14.0を自動的にダウンロードvisualcppbuildtools_full.exeしてインストールします実際にVisual Studioをインストールすることなく、。インストールが完了したら、pip installを再試行すると、エラーは再び発生しなくなります。

次のプラットフォームとバージョンでテストしました。

Python 3.6 on Windows 7 64-bit
Python 3.7 on Windows Server 2016 (64-bit system)
Python 3.8 on Windows 10 64-bit

1

Visual Studioがインストールされていない Windowsボックスにpyodbcをインストールする場合は、バイナリディストリビューションを使用して手動でpyodbcをインストールすることもできます。

これは、作業しているマシンの管理者権限がなく、virtualenvをセットアップしようとしている場合に特に役立ちます。

手順:

  1. ここから最新のWindowsインストーラーをダウンロードします(pyodbc-XXXwin-Y-py2.7.exe)
  2. 7-Zip(またはWinRARなど)を使用してインストーラーの実行可能ファイルを開きます。
  3. pyodbc.pydとpyodbc-XXX-py2.7.egg-infoを抽出して、 [python installation directory or virtualenv]\Lib\site-packages
  4. ステップ4はありません:)

1

Python 3.4では、依存関係はVisual Studio 2010に依存しています。VisualC ++ 2010 Expressをインストールすると問題が解決しました。

それをだまして、たまたま私が機能しなかったVS 2008または2013インストールを使用しました。



1

@monkeyの答えは正しいものの1つですが、不完全です。

MinGWを使用する場合は、C、C ++、およびMinGWのインストールプロセス中に提案されたその他の開発ツールを選択して、「make.exe」も取得する必要があります。

また、envでmake.exeにパスを設定する必要があります。

彼の答えを完了するために、ここにステップがあります:

  1. mingw32のbinディレクトリを環境変数に追加します
  2. 追加C:\Programs\MinGW\bin;C:\Programs\MinGW\msys\1.0\bin;PATHへ
  3. 次のdistutils.cfg場所にあるファイルを編集(存在しない場合は作成)しますC:\Python26\Lib\distutils\distutils.cfg

    [build]
    compiler=mingw32

新しいcmd.exeを開いて、環境変数が設定されていることを確認します。


32ビットpythonモジュールは32ビットmingwでコンパイルする必要がありますが、64ビットpythonモジュールは64ビットmingwでコンパイルする必要があります。Cygwinの64ビットでは、そこに2つのmingwの実行ファイルが用意されていますx86_64-w64-mingw32-gcci686-w64-mingw32-gcc。これらの実行可能ファイルは、通常Mingwから取得するものと同じです(Cygwin環境内でコンパイルしただけです)。
CMCDragonkai 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.