[Python] error: no se puede encontrar vcvarsall.bat


Answers

Encontré la solución. Tuve exactamente el mismo problema y error al instalar 'amara'. Tenía mingw32 instalado, pero se necesitaban configurar los distutils.

  1. Tengo Python 2.6 que ya estaba instalado.
  2. Instalé mingw32 en C:\programs\mingw\
  3. Agregue el directorio bin de mingw32 a su variable de entorno: agregue c:\programs\MinGW\bin; a la RUTA
  4. Edite (cree si no existe) el archivo distutils.cfg ubicado en C:\Python26\Lib\distutils\distutils.cfg para que sea:

    [build]
    compiler=mingw32
    
  5. Ahora ejecute easy_install.exe amara .

Asegúrese de que el entorno esté configurado abriendo un nuevo cmd.exe .

Question

Intenté instalar el paquete de Python, dulwich :

pip install dulwich

Pero recibo un mensaje de error críptico:

error: Unable to find vcvarsall.bat

Lo mismo ocurre si intento instalar el paquete de forma manual:

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



Pasé casi 2 días averiguando cómo solucionar este problema en mi versión de Python 3.4 de 64 bits: Python 3.4.3 (v3.4.3: 9b73f1c3e601, 24 de febrero de 2015, 22:44:40) [MSC v.1600 64 bit (AMD64) )] en win32

Solución 1, difícil: (antes de leer esto, lea primero la Solución 2 a continuación) Finalmente, esto es lo que me ayudó:

  1. instalar Visual C ++ 2010 Express
  2. instalar Microsoft Windows SDK v7.1 para Windows 7
  3. crear manualmente el archivo vcvars64.bat en C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 que contiene CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 u otra ruta dependiendo de dónde tenga la suya instalada
  4. (esto parece ser opcional) instale Microsoft Visual Studio 2010 Service Pack 1 junto con Microsoft Visual C ++ 2010 Service Pack 1 Actualización del compilador para Windows SDK 7.1
  5. después de eso intenté pip install numpy pero recibí el siguiente error:

    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
    

    Cambié mfinfo a None en C:\Python34\Lib\distutils\msvc9compiler.py por este https://.com/a/23099820/4383472

  6. finalmente después de pip install numpy comando pip install numpy mi avast antivirus intentó interferir en el proceso de instalación, pero lo deshabilité rápidamente

Tomó mucho tiempo, varios minutos para compilar numpy, incluso pensé que había un error, pero finalmente todo estaba bien.

Solución 2, fácil: (Sé que este enfoque ya se mencionó en una answer muy votada, pero permítanme repetir, ya que es realmente más fácil) Después de pasar por todo este trabajo comprendí que la mejor manera para mí es simplemente usar ya binarios precompilados de http://www.lfd.uci.edu/~gohlke/pythonlibs/ en el futuro. Hay muy pocas posibilidades de que alguna vez necesite algún paquete (o una versión de un paquete) que este sitio no contenga. El proceso de instalación también es mucho más rápido de esta manera. Por ejemplo, para instalar numpy :

  1. numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl (si tiene Python 3.4 de 64 bits) desde ese sitio
  2. en el símbolo del sistema o en powershell, instálelo con pip pip install numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl (o la ruta completa al archivo dependiendo de cómo se abre el símbolo del sistema)



Si desea compilar con Visual Studio C ++ en lugar de mingw ...

  1. Ejecute python.exe para mostrar con qué versión de VC ++ se compiló (ejemplo que se muestra a continuación).

    Es importante usar la versión correspondiente del compilador de Visual C ++ con el que se compiló Python, ya que la distilutils de get_build_version impide mezclar versiones ( según la advertencia de Piotr ).

    • Amarillo (arriba) es Python 2.7, compilado con MSC v.1500 (Visual Studio C ++ 2008)
    • Rojo (abajo) es Python 3.4.1, compilado con MSC v.1600 (Visual Studio C ++ 2010)

  2. Use la tabla siguiente [1] para que coincida con la versión interna de VC ++ con la versión correspondiente de 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. Descargue e instale la versión correspondiente de Visual Studio C ++ desde el paso anterior.
    Las notas adicionales para versiones específicas de VC ++ se enumeran a continuación.

    Notas para Visual Studio C ++ 2008

    Solo para los compiladores de 32 bits, descargue Visual Studio C ++ 2008 Express Edition .

    Para los compiladores de 64 bits [2] [3] , descargue Windows SDK para Windows 7 y .NET Framework 3.5 SP1 .

    • Desmarque todo, excepto Developer Tools >> Visual C++ Compilers para ahorrar tiempo y espacio en disco al instalar herramientas de SDK que de otra manera no necesitaría.

    Notas para Visual Studio C ++ 2010

    Según Microsoft, si instaló Visual Studio 2010 SP1, es posible que haya eliminado los compiladores y las bibliotecas de VC ++.
    Si ese es el caso, descargue la actualización del compilador de Visual C ++ 2010 SP1 .

    Notas para Visual Studio C ++ 2015

    Si no necesita Visual Studio IDE, descargue Visual Studio C ++ 2015 Build Tools .

    Notas para Visual Studio C ++ 2017

    Si no necesita Visual Studio IDE, descargue Build Tools para Visual Studio 2017 .

    Sugerencia : si tiene una instalación de Python de 32 y 64 bits, también puede utilizar virtualenv para crear entornos de Python separados para que pueda usar uno u otro a la vez sin interferir con su ruta para elegir qué versión de Python utilizar.

Según @srodriguex , es posible que pueda omitir la carga manual del archivo de proceso por lotes (Pasos 4 a 6) copiando en su lugar algunos archivos por lotes donde Python está buscando siguiendo esta respuesta . Si eso no funciona, aquí están los siguientes pasos que originalmente me funcionaron.

  1. Abra un cmd.exe

  2. Antes de intentar instalar algo que requiera extensiones C, ejecute el siguiente archivo por lotes para cargar el entorno del compilador VC ++ en la sesión (es decir, variables de entorno, la ruta al compilador, etc.).

    Ejecutar:

    • Compiladores de 32 bits:

      Nota : las instalaciones de Windows de 32 bits solo tendrán C:\Program Files\ como se esperaba

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

    • Compiladores de 64 bits:

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

      Nota : Sí, los compiladores nativos de 64 bits están en Program Files (x86) . No me preguntes por qué.
      Además, si se pregunta cuál es la diferencia entre vcvars64.bat y vcvarsx86_amd64.bat o, más importante, la diferencia entre amd64 y x86_amd64 , los primeros son para las herramientas de compilación nativas de 64 bits y los últimos son los compiladores cruzados de 64 bits que pueden ejecutar en una instalación de Windows de 32 bits.

    Actualizar:
    Si por alguna razón estás recibiendo un error: ... was unexpected at this time. donde el ... es una serie de caracteres, entonces necesita verificar que la variable de ruta no tenga caracteres extraños como citas extra o caracteres extraviados. El archivo por lotes no podrá actualizar su ruta de sesión si no puede encontrarle sentido en primer lugar.

  3. Si todo salió bien, debería recibir uno de los siguientes mensajes según la versión de VC ++ y el comando que ejecutó:

    Para las herramientas del compilador de 32 bits:
    Setting environment for using Microsoft Visual Studio 20xx x86 tools.

    Para las herramientas del compilador de 64 bits:
    Setting environment for using Microsoft Visual Studio 20xx x64 tools.

  4. Ahora , ejecute la instalación mediante python setup.py install o pip install pkg-name

  5. Espera y cruza los dedos que los planetas están alineados correctamente para que VC ++ coopere.




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

Hay instrucciones para instalar Anaconda que proporcionará una GUI y una instalación silenciosa de la mayoría de los paquetes que parecen estar causando este problema. 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.

EDITAR: Solo quería señalar que hay un enlace Python34 en la página de la GUI junto a los símbolos del sistema operativo.




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




Parece que está buscando compiladores de VC, por lo que podría tratar de mencionar el tipo de compilador con -c mingw32 , ya que tiene msys

python setup.py install -c mingw32



Tendrá que instalar un compilador de Microsoft, compatible con el compilador utilizado para construir Python. Esto significa que necesita Visual C ++ 2008 (o más reciente, con share ).

Microsoft ahora proporciona un compilador y encabezados agrupados solo para poder compilar las extensiones de Python, en la URL memorable:

Compilador de Microsoft Visual C ++ para Python 2.7

http://aka.ms/vcpython27

Este es un paquete relativamente pequeño; 85 MB para descargar, instalable sin privilegios de administrador, no se requiere reiniciar. El nombre es un poco engañoso, el compilador funcionará para cualquier versión de Python compilada originalmente con Visual C ++ 2008, no solo Python 2.7.

Si inicia un aviso interactivo de Python o imprime sys.version , busque la cadena de la versión de MSC ; si es MSC v.1500 puede usar esta herramienta.

Desde el anuncio original a la lista de distutils :

Microsoft ha lanzado un paquete compilador para Python 2.7 para facilitar a las personas la construcción y distribución de sus módulos de extensión C en Windows. El compilador de Microsoft Visual C ++ para Python 2.7 (también conocido como VC9) está disponible en: http://aka.ms/vcpython27

Este paquete contiene todas las herramientas y encabezados necesarios para compilar módulos de extensión C para Python 2.7 de 32 bits y 64 bits (tenga en cuenta que algunos módulos de extensión requieren dependencias de terceros como OpenSSL o libxml2 que no están incluidos). También se admiten otras versiones de Python compiladas con Visual C ++ 2008, por lo que "Python 2.7" es solo publicidad, funcionará bien con 2.6 y 3.2.

Tenga en cuenta que necesita tener setuptools 6.0 o posterior instalado (enumerados en los requisitos del sistema en la página de descarga). El proyecto que está instalando debe usar setuptools.setup() , no distutils o la autodetección no funcionará.

Microsoft ha declarado que quieren mantener la URL estable, de modo que las secuencias de comandos automatizadas puedan hacer referencia a ella fácilmente.




Mire en el archivo setup.py del paquete que está tratando de instalar. Si se trata de un paquete anterior, puede estar importando distutils.core.setup() lugar de setuptools.setup() .

Me encontré con esto (en 2015) con una combinación de estos factores:

  1. El compilador de Microsoft Visual C ++ para Python 2.7 de http://aka.ms/vcpython27

  2. Un paquete anterior que usa distutils.core.setup()

  3. Intentando hacer la python setup.py build lugar de usar pip .

Si usa una versión reciente de pip, forzará (monkeypatch) el paquete para usar setuptools, incluso si setup.py llama a distutils. Sin embargo, si no está utilizando pip, y en su lugar solo está haciendo python setup.py build , el proceso de compilación utilizará distutils.core.setup() , que no conoce la ubicación de instalación del compilador.

Solución

Paso 1: abra el símbolo del sistema de Visual C ++ 2008 apropiado

Abra el menú Inicio o la pantalla de Inicio y busque "Símbolo del sistema de Visual C ++ 2008 32 bits" (si su python es de 32 bits) o "Símbolo del sistema de Visual C ++ 2008 64-bit" (si su python es de 64 bits) . Ejecutarlo. El símbolo del sistema debería decir Visual C ++ 2008 ... en la barra de título.

Paso 2: establecer variables de entorno

Establezca estas variables de entorno en el símbolo del sistema que acaba de abrir.

SET DISTUTILS_USE_SDK=1
SET MSSdk=1

Referencia http://bugs.python.org/issue23246

Paso 3: compila e instala

cd al paquete que desea construir y ejecute python setup.py build , luego python setup.py install . Si desea instalarlo en un virtualenv, actívelo antes de compilarlo.




With Python 3.4, the dependency is on Visual Studio 2010. Installing Visual C++ 2010 Express fixed the problem for me.

Tricking it into using the VS 2008 or 2013 installs that I happened to have didn't work.




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.




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.




Encontré este problema cuando traté de instalar la biblioteca numpy en mi Python 3.5. La solución es instalar VS2015. Tenía VS2008, 2012, 2013, ninguno de los cuales es compatible con Python 3.5. Aparentemente, la versión más nueva de python tiene dependencia de las versiones más nuevas de VS.

También asegúrese de que las herramientas comunes de C ++ estén instaladas con Visual Studio.







Tuve este problema al utilizar Python 3.4.1 en Windows 7 x64 , y desafortunadamente los paquetes que necesitaba no tenían el exe o las ruedas adecuadas que podía usar. Este sistema requiere algunas 'soluciones', que se detallan a continuación (y TLDR en la parte inferior ).

Usando la información en la respuesta de Jaxrtech anterior , determiné que necesitaba Visual Studio C ++ 2010 (sys.version return MSC v.1600), así que instalé Visual C ++ 2010 Express desde el enlace en su respuesta, que es http://go.microsoft .com /? linkid = 9709949 . Instalé todo con actualizaciones, pero como puede leer a continuación, esto fue un error. Solo la versión original de Express debe instalarse en este momento (no se actualizó nada).

vcvarsall.bat ahora estaba presente, pero hubo un nuevo error al instalar el paquete, query_vcvarsall raise ValueError(str(list(result.keys())))ValueError: [u'path'] . Hay otras preguntas de con este error, como Errores al construir / instalar el módulo C para Python 2.7

De esa respuesta determiné que 2010 Express solo instala compiladores de 32 bits. Para obtener compiladores de 64 bits (y otros), debe instalar Windows 7.1 SDK. Ver http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx

Sin embargo, esto no me lo instaló, y el instalador devolvió el error de installation failed with return code 5100 . Encontré la solución en el siguiente enlace: http://support.microsoft.com/kb/2717426 . En resumen, si se instalan versiones más recientes de x86 y x64 de Microsoft Visual C ++ 2010 Redistributable, entran en conflicto con las del instalador de SDK y es necesario desinstalarlas primero.

Luego, el SDK se instaló, pero noté que vcvars64.bat todavía no existía en C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin , ni en sus subcarpetas. vcvarsall.bat ejecuta el archivo por lotes vcvars64, por lo que sin él, el paquete python aún no se instalaría (olvidé el error que se mostraba en este momento).

Luego encontré algunas instrucciones aquí: http://www.cryptohaze.com/wiki/index.php/Windows_7_Build_Setup#Download_VS_2010_and_Windows_SDK_7.1 Siguiendo las instrucciones, ya había instalado Express y 7.1 SDK, así que instalé SDK 7.1 SP1, e hice falta la corrección del archivo de encabezado. Luego creé manualmente vcvars64.bat con el contenido CALL setenv /x64 . Pegaré todas esas instrucciones aquí, para que no se pierdan.

El paso 1 es descargar Visual Studio Express 2010.

http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express es un buen lugar para comenzar. Descargue el instalador y ejecútelo (vc_web.exe). No necesita la descarga adicional de SQL 2008.

También necesitará el Windows SDK (actualmente 7.1) para los compiladores de 64 bits, a menos que desee hacer compilaciones de 32 bits, que no son totalmente compatibles ...

http://www.microsoft.com/en-us/download/details.aspx?id=8279 es un buen punto de partida para descargar esto: ¡querrá ejecutar winsdk_web.exe cuando lo descargue!

La instalación predeterminada aquí está bien.

Finalmente, descargue e instale la actualización de Windows SDK 7.1 SP1: http://www.microsoft.com/en-us/download/details.aspx?id=4422

Y, para reparar el archivo de encabezado faltante, VS2010 SP1. http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5

Y, maldita sea, arregle el archivo por lotes que falta para VS2010 Express. Esto se está volviendo completamente absurdo.

En C: \ Archivos de programa (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64, cree "vcvars64.bat" con lo siguiente (deberá ejecutar como administrador):

LLAME a setenv / x64

Mi paquete python aún no se instaló (no puedo recuperar el error). Luego encontré algunas instrucciones (copiadas a continuación) para usar el Símbolo del sistema SDK 7.1, consulte: https://mail.python.org/pipermail/distutils-sig/2012-February/018300.html

No importa esta pregunta Alguien aquí notó este elemento en el menú: Inicio-> Todos los programas-> SDK de Microsoft Windows v7.1 -> Símbolo del sistema de Windows SDK 7.1

This runs a batch job that appears to set up a working environment for the compiler. From that prompt, you can type "setup.py build" or "setup.py install".

I opened the Windows SDK 7.1 Command Prompt as instructed, and used it to run easy_install on the python package. And at last, success!

TLDR ;

  1. Install Visual Studio Express 2010 (preferably without updated redistributables or SQL server).
  2. Install Windows 7.1 SDK
  3. Instal SDK 7.1 SP1 update, and VS2010 SP1 header file fix (this step may not be required).
  4. Manually create C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat with content CALL setenv /x64
  5. Start->All Programs->Microsoft Windows SDK v7.1 ->Windows SDK 7.1 Command Prompt to open special x64 command prompt, which can then be used with python/easy_install/pip/etc (including those in virtual_envs).



Links