50

Windows 8 で Python 2.7 を使用pip install ziplineすると、次のエラーが表示されます。

Downloading/unpacking six (from python-dateutil==2.1->delorean->zipline[all])
  Running setup.py egg_info for package six

Installing collected packages: blist, pytz, requests, python-dateutil, six
  Running setup.py install for blist
    building '_blist' extension
    error: Unable to find vcvarsall.bat
    Complete output from command C:\Python27\python.exe -c "import setuptools;__
file__='c:\\users\\ThatsMe\\appdata\\local\\temp\\pip-build-ThatsMe\\blist\\setup.py';ex
ec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" inst
all --record c:\users\ThatsMe\appdata\local\temp\pip-xvoky2-record\install-record.tx
t --single-version-externally-managed:

running install

running build

running build_py

running build_ext

building '_blist' extension

error: Unable to find vcvarsall.bat

質問:エラーはどのように解決できますか? 実行pip install zipline[all]しても同じエラーが発生します...

4

10 に答える 10

58

ここでの問題は、292 行目 (ここでは Python 3.4.3 を使用) で、次の$python_install_prefix/Lib/distutils/msvc9compiler.py ように述べています。

VERSION = get_build_version()

これは、Python がビルドされた MSVC バージョンのみをチェックします。この行を実際の Visual Studio バージョンに置き換えるだけです。12.0為にMSVC2013

VERSION = 12.0

問題を修正します。

更新: このバージョンがハードコードされているのには十分な理由があることが判明しました。MSVC C ランタイムは、メジャー バージョン間で互換性を保つ必要はありません。したがって、別の VS バージョンを使用すると、実行時の問題が発生する可能性があります。したがって、この問題が解決されるまで、VS 2008 (Python 2.6 から 3.2 まで) と VS2010 (Python 3.3 以降) を使用することをお勧めします。

バイナリ互換性は、VS 2015 (こちらを参照) と Python 3.5 で提供されます。

Python 2.7 ユーザー向けに、Microsoft は Python 2.7用の特別な Microsoft Visual C++ コンパイラをリリースしました。これは、VS 2008 全体をインストールしなくても使用できます。

于 2014-04-30T20:20:30.553 に答える
23

代わりにol' good を使用できますeasy_install zipline

easy_installpip ではありませんが、バイナリ パッケージをダウンロードしてインストールする機能も良い点の 1 つです。これにより、VC++ を準備する必要がなくなります。もちろん、これは、バイナリが Python バージョン用に準備されているという前提に依存しています。

アップデート:

はい、Pip は今すぐバイナリをインストールできます!

「卵」を置き換えることになっている新しいバイナリ Python アーカイブ形式 ( wheel ) があります。ホイールは ですでにサポートされていpipます。これは、誰かがあなたのプラットフォーム用のホイールを構築して PyPI にアップロードするとすぐに、コンパイルせずziplineにインストールできることを意味します。pip

于 2013-11-07T08:46:03.917 に答える
7

まず、システムで vcvarsall.bat ファイルを探す必要があります。

存在しない場合は、Microsoft Visual C++ Compiler for Python 2.7をインストールすることをお勧めします。これにより、すべてのユーザーに対してインストールする場合、「C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0」に vcvarsall.bat が作成されます。

問題は、vcvarsall.bat ファイルを探しているC:/Python27/Lib/distutils/msvc9compiler.pyモジュールの関数find_vcvarsall(version)にあります。

関数呼び出しに続いて、vcvarsall.bat ファイルへのパスを含むレジストリ内のエントリを探していることがわかります。この関数は、上記のインストールが配置した場所とは異なる他のディレクトリを検索しているため、決して見つかりません。私の場合、レジストリは存在しませんでした。

この問題を解決する最も簡単な方法は、手動で vcvarsall.bat ファイルのパスを返すことです。これを行うには、msvc9compiler.py ファイルの関数 find_vcvarsall(version)を次のようにvcvarsall.batファイルへの絶対パスに変更します。

def find_vcvarsall(version):
    return r"C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0\vcvarsall.bat"

このソリューションは私にとってはうまくいきました。

vcvarsall.bat ファイルが既にある場合は、レジストリにキーproductdirがあるかどうかを確認する必要があります。

(HKEY_USERS、HKEY_CURRENT_USERS、HKEY_LOCAL_MACHINE または HKEY_CLASSES_ROOT)\Software\Wow6432Node\Microsoft\VisualStudio\version\Setup\VC

バージョン = msvc9compiler.get_build_version( )

キーがない場合は、次のようにします。

def find_vcvarsall(version):
        return <path>\vcvarsall.bat

正確な動作を理解するには、 find_vcvarsall(version)関数で始まるmsvc9compiler.pyモジュールを確認してください。

于 2015-02-05T23:08:02.433 に答える
3

マシンに C++ コンパイラがインストールされていないという理由だけで、次のことを確認してください。

  • このページから Microsoft Visual C++ 2008 をダウンロードします。いずれにせよ、これは一般的に役立つページなので、ブックマークしておくとよいでしょう。Python 3.3+ の場合、MS Visual C++ 2010を使用します。インストールします。

  • Windows エクスプローラー (ファイル ブラウザー) を開き、「vcvarsall.bat」の場所を検索してクリップボードに切り取ります。

  • Windows のスタート キーから regedit を実行します。管理者権限が必要です。

  • こちらの説明に従って、HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VC\ProductDir (64 ビット Windows) または HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Setup\VC\ProductDir (32 ビット) にレジストリ エントリを追加します .

ヒント: registery ディレクトリの 0.9 は、Visual Studio の現在インストールされているバージョンです。VS 2013 を実行している場合は、パス HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio\12.0.... を見つける必要があります。

  • Windows のスタート キーで、cmd と入力してコマンド シェルを取得します。必要に応じて、仮想環境に移動して activate.bat を実行します。

  • pip install またはインストールに使用するもの。

于 2014-02-24T18:13:59.200 に答える
2

パスに Visual Studio の bin ディレクトリが必要です。Pip install はいくつかの C コードをコンパイルしようとしています。

于 2013-11-07T08:30:49.760 に答える
1

この vcvarsall.bat の調査にも何時間も費やしました。SO に関するほとんどの回答は、Python 2.7 に焦点を当てているか、システム パスを変更して回避策を作成しています。どれも私にとってはうまくいきませんでした。このソリューションは、Python 3.5 ですぐに使用でき、(私が思うに) それを行う「正しい」方法です。

  1. このリンクを参照してください -- Python のさまざまなバージョンで使用する Windows コンパイラについて説明しています: https://wiki.python.org/moin/WindowsCompilers#Microsoft_Visual_C.2B-.2B-_14.0_standalone:_Visual_C.2B-.2B- _Build_Tools_2015_.28x86.2C_x64.2C_ARM.29

  2. Python 3.5 の場合は、https ://www.microsoft.com/en-us/download/details.aspx?id=49983 をダウンロードしてください。

  3. 私にとっては、C:\Program Files (x86)\Microsoft Visual C++ Build Tools\Visual C++ x64 Native Build Tools Command Prompt を実行して動作させる必要がありました。そのコマンド プロンプトから、問題を引き起こした特定のパッケージである「pip install django_compressor」を実行したところ、完全に機能しました。

これが誰かの時間を節約することを願っています!

于 2016-03-23T20:48:43.673 に答える
0

ヒントをくれた「msoliman」に感謝しますが、VS2010 を持っていない人にとっては、彼の答えは明確な解決策にはなりません

解決策:
ファイルを編集: " [Python_install_loc] /Lib/distutils/msvc9compiler.py"
行 224 を変更:

productdir = Reg.get_value(r"%s\Setup\VC" % vsbase,
                               "productdir")

に:

productdir = "C:\Program Files (x86)\Microsoft Visual Studio [your_vs_version(11/12...)]\VC"

そしてそれはうまくいくはずです

于 2014-04-29T10:47:06.177 に答える
0

これが 3.4 で解決する答えではないかもしれないことは理解していますが、私は 3.4 でこれを修正するために非常に多くのことを試しました。私の場合、仕事の要求)。

まったく同じセットアップで、インストールの問題は Python 3.4 でのみ発生することがわかりました。2.7 に変更したところ、すべての問題が解決したように見えました。

ただし、かなり熱心なセキュリティ設定を行っているため、ホーム バージョン (まだ 3.4) で同じことを試して、さらに満足できるかどうかを確認します。私のVSバージョンは何らかの形で制限されており、上記の回答が役立つはずです。今夜さらに何か見つけたら、さらに詳細を追加します。

これは私の最初の返信であり、私が恐れている最も技術的なものではありません!

于 2015-04-10T17:16:50.513 に答える