pip_build_root - python setup py egg_info failed with error code 3221226505




錯誤:無法找到vcvarsall.bat (20)

如果你想用Visual Studio C ++而不是mingw編譯...

  1. 運行python.exe來顯示它編譯的VC ++版本(示例如下所示)。

    由於distilutilsget_build_version防止混合版本( 根據Piotr的警告 ),因此使用Python編譯的相應版本的Visual C ++編譯器很重要

    • 黃色(頂部)是Python 2.7,使用MSC v.1500(Visual Studio C ++ 2008)進行編譯,
    • 紅色(底部)是Python 3.4.1,使用MSC v.1600(Visual Studio C ++ 2010)進行編譯,

  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)      
    
  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的註釋

    據微軟稱,如果你安裝了Visual Studio 2010 SP1,它可能已經刪除了VC ++的編譯器和庫。
    如果是這種情況,請下載Visual C ++ 2010 SP1編譯器更新

    Visual Studio C ++ 2015的注意事項

    如果您不需要Visual Studio IDE,請下載Visual Studio C ++ 2015構建工具

    適用於Visual Studio C ++ 2017的註釋

    如果您不需要Visual Studio IDE,請下載適用於Visual Studio 2017的構建工具

    建議 :如果您同時安裝了32位和64位Python,那麼您可能還想使用virtualenv創建單獨的Python環境,以便一次使用一個或另一個,而不會混淆路徑以選擇要使用哪個Python版本使用。

根據@srodriguex ,您可以跳過手動加載批處理文件(步驟4-6),而是通過遵循此答案將幾個批處理文件複製到Python正在搜索的位置。 如果這不起作用,以下是最初為我工作的以下步驟。

  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.batvcvarsx86_amd64.bat之間的vcvars64.bat ,或者更重要的是amd64x86_amd64之間的區別,前者適用於本機64位編譯器工具,後者適用於64位交叉編譯器在32位Windows安裝上運行。

    更新:
    如果由於某種原因,您正在收到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 installpip install pkg-name運行pip install pkg-name

  5. 希望並且交叉你的手指,讓行星與VC ++正確對齊以便合作。

我試圖安裝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

更新 :評論指出,這裡的說明可能是危險的。 考慮使用Visual C ++ 2008 Express版本或microsoft.com/en-us/download/details.aspx?id=44266的專用microsoft.com/en-us/download/details.aspx?id=44266 ( details ),而不要使用下面的原始答案。 原始錯誤消息意味著未安裝所需的Visual C ++版本。

對於Windows安裝:

在安裝軟件包時運行setup.py時,Python 2.7搜索已安裝的Visual Studio 2008.在調用setup.py之前,您可以通過在VS90COMNTOOLS環境變量中設置正確的路徑來欺騙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


Below steps fixed this issue for me, I was trying to create setup with cython extension.

  1. Install Microsoft Visual C++ Compiler for Python 2.7
  2. The default install location would be @ C:\Users\PC-user\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python This might actually fix the issue, test once before proceeding.
  3. If it fails, Check where in VC++ for python vcvarsall.bat file is located
  4. Open the msvc9compiler.py file of distutils package in notepad.
  5. In my box this was @ C:\Anaconda2\Lib\distutils\msvc9compiler.py find_vcvarsall function in this file, determine the version of VC by printing out version argument. For Python 2.7 it's likely to be 9.0
  6. Now create an environment variable VS90COMNTOOLS, Pointing to C:\Users\PC-user\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\bin
  7. For some reason distutils expects the vcvarsall.bat file to be within VC dir, but VC++ for python tools has it in the root of 9.0 To fix this, remove "VC" from the path.join (roughly around line 247)

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

The above steps fixed the issue for me.


Go here: http://docs.continuum.io/anaconda/install.html#windows-install

There are instructions to install anaconda which will provide a GUI and a silent install of a majority of the packages that seem to be causing this issue from http://www.scipy.org/ . I am aware of the solution for 2.7 here https://www.microsoft.com/en-us/download/details.aspx?id=44266 but I did not see an option for Python 3.4. After downloading and installing Anaconda you should be able to import a majority of the packages you need from scipy.

Hope this helps some people. Took me 45 minutes of scouring posts and sites.

EDIT: Just wanted to note there is a Python34 link on the GUI page next to the OS symbols.


I had the same error (which I find silly and not really helpful whatsoever as error messages go) and continued having problems, despite having a C compiler available.

Surprising, what ended up working for me was simply upgrading pip and setuptools to the most recent version . Hope this helps someone else out there.


I tried many solutions but only one worked for me, the install of Microsoft Visual Studio 2008 Express C++.

I got this issue with a Python 2.7 module written in C (yEnc, which has other issues with MS VS). Note that Python 2.7 is built with MS VS 2008 version, not 2010!

Despite the fact it's free, it is quite hard to find since MS is promoting VS 2010. Still, the MSDN official very direct links are still working: check https://.com/a/15319069/2227298 for download links.


If you have mingw installed

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

works, forcing pip to build using the mingw compiler instead of Microsoft's. See here https://github.com/pypa/pip/issues/18 for details (last post).


If you're looking to install pyodbc on a Windows box that doesn't have Visual Studio installed another option is to manually install pyodbc using the binary distribution.

This is particularly useful if you do not have administrator privileges on the machine you're working with and are trying to set up a virtualenv .

腳步:

  1. Download the latest Windows installer from here (pyodbc-XXXwin-Y-py2.7.exe)
  2. Open the installer executable using 7-Zip (or WinRAR or whatever)
  3. Extract pyodbc.pyd and pyodbc-XXX-py2.7.egg-info and place them in [python installation directory or virtualenv]\Lib\site-packages
  4. There is no step 4 :)

The answer given by @monkey is one of the correct ones, but it is incomplete.

In case you'd like to use MinGW , you should select the C, C++ and also other development tools suggested during the MinGW installation process to also get "make.exe."

You must also have the path set to make.exe in the env.

To complete his answer, here are the steps:

  1. Add mingw32's bin directory to your environment variables
  2. Append C:\Programs\MinGW\bin;C:\Programs\MinGW\msys\1.0\bin; to the PATH
  3. Edit (create if it doesn't exist) the distutils.cfg file located at C:\Python26\Lib\distutils\distutils.cfg to be:

    [build]
    compiler=mingw32
    

Make sure the environment variables is set by opening a new cmd.exe.


The easiest way to solve this in 2016 is to install Chocolatey and then the vcpython27 package. Open Powershell:

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

You can use easy_install instead of pip it works for me.


也許有人可能會感興趣,下面的工作為我py2exe包。 (我有Windows 7 64位和可移植的Python 2.7,Visual Studio 2005 Express與Windows SDK的Windows 7和.NET Framework 4)

set VS90COMNTOOLS=%VS80COMNTOOLS%

然後:

python.exe setup.py install


您需要安裝一個Microsoft編譯器,與用於構建Python的編譯器兼容。 這意味著你需要Visual C ++ 2008(或者更新,有share )。

微軟現在提供一個捆綁的編譯器和頭文件,以便能夠編譯Python擴展。

Microsoft Visual C ++編譯器for Python 2.7

http://aka.ms/vcpython27

這是一個相對較小的包裝; 85MB下載,無需管理員權限即可安裝,無需重啟。 這個名字有點誤導,編譯器可以用於任何最初使用Visual C ++ 2008編譯的Python版本,而不僅僅是Python 2.7。

如果啟動Python交互提示或打印sys.version ,請查找MSC版本字符串; 如果是MSC v.1500 ,則可以使用此工具。

原始公告到distutils列表

微軟已經發布了Python 2.7的編譯器軟件包,使人們可以更容易在Windows上構建和分發他們的C擴展模塊。 用於Python 2.7的Microsoft Visual C ++編譯器(也稱為VC9)可從以下位置獲得: http://aka.ms/vcpython27 : http://aka.ms/vcpython27

該軟件包包含為Python 2.7 32位和64位構建C擴展模塊所需的所有工具和頭文件(注意某些擴展模塊需要第三方依賴項,例如OpenSSL或libxml2)。 還支持使用Visual C ++ 2008構建的其他版本的Python,因此“Python 2.7”只是廣告 - 它可以在2.6和3.2下正常工作。

請注意,您需要安裝setuptools 6.0或更高版本(在下載頁面上的系統要求中列出)。 您正在安裝的項目必須使用setuptools.setup() ,而不是distutils否則自動檢測將不起作用。

微軟表示他們希望保持URL穩定,以便自動腳本可以輕鬆引用它。


我只是遇到了同樣的問題,所以我會在這裡講述我的故事,希望能夠幫助其他人解決同樣的問題,並為他們節省下我剛剛度過的幾個小時:

我在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的所有實例。” (從here

現在,我終於可以開始工作了。


我嘗試了所有上述答案,並發現所有這些答案都不起作用,這可能是我使用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

並粘貼該文件。 然後,一切都會好的。


我有python 2.73和windows 7。為我工作的解決方案是:

  1. 將mingw32的bin目錄添加到環境變量中:將PATH附加到C:\programs\mingw\bin;
  2. 創建位於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))

我花了差不多2天的時間搞清楚如何解決這個問題在我的Python 3.4 64位版本: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. C:\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 1Microsoft Visual C ++ 2010 Service Pack 1編譯器更新為Windows SDK 7.1
  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://.com/a/23099820/4383472在C:\Python34\Lib\distutils\msvc9compiler.py更改為None

  6. 終於在pip install numpy命令後,我的avast antivirus試圖干涉安裝過程,但我很快禁用了它

花了很長時間 - numpy編譯了幾分鐘,我甚至認為有錯誤,但最後一切都很好。

解決方案2,簡單:(我知道這種方法已經在高度投票的answer被提及,但讓我重複,因為它更容易)經過所有這些工作後,我明白,對我來說最好的方法就是使用已經將來可以從http://www.lfd.uci.edu/~gohlke/pythonlibs/預編譯二進製文件。 我很少有機會需要本網站不包含的一些軟件包(或軟件包的一個版本)。 這種安裝過程也更快捷。 例如,要安裝numpy

  1. 從該站點下載numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl (如果您有Python 3.4 64位)
  2. 在命令提示符或pip install numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl使用pip pip install numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl (或文件的完整路徑,具體取決於如何打開命令提示符)

當我嘗試在我的python 3.5上安裝numpy庫時遇到了這個問題。 解決方案是安裝VS2015。 我有VS2008,2012,2013,其中沒有一個與python 3.5兼容。 顯然新版本的python依賴於較新版本的VS.

還要確保C ++ Common Tools與Visual Studio一起安裝。


看起來像它尋找VC編譯器,所以你可以試著用-c mingw32來提及編譯器類型,因為你有msys

python setup.py install -c mingw32




failed-installation