Pregunta error: no se puede encontrar vcvarsall.bat


Traté de 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

806
2018-05-12 10:24


origen


Respuestas:


Actualizar: Los comentarios señalan que las instrucciones aquí pueden ser peligrosas. Considere usar la edición Visual C ++ 2008 Express o la herramienta especialmente diseñada Compilador de Microsoft Visual C ++ para Python (detalles) y NO usando la respuesta original a continuación. Mensaje de error original significa que la versión requerida de Visual C ++ no está instalada.


677
2018-05-11 20:39



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 para C:\programs\mingw\
  3. Agregue el directorio bin de mingw32 a su variable de entorno: append c:\programs\MinGW\bin; al CAMINO
  4. Editar (crear si no existe) distutils.cfg archivo ubicado en C:\Python26\Lib\distutils\distutils.cfg ser:

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

Asegúrate de que el entorno esté configurado abriendo una nueva cmd.exe.


224
2018-05-15 03:37



Puede instalar una versión compilada desde http://www.lfd.uci.edu/~gohlke/pythonlibs/


221
2018-05-12 19:55



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

  1. correr 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 desde destilacioneses get_build_version evita mezclas de versiones (por 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)

    Example from the command line showing Python 2.7 compiled with MSC v.1500 and Python 3.4.1 compiled with MSC v.1600

  2. Use la tabla a continuación[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

    por solamente los compiladores de 32 bits, descargar Visual Studio C ++ 2008 Express Edition.

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

    • Desmarque todo excepto Developer Tools >> Visual C++ Compilers para ahorrar tiempo y espacio de disco instalando 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, descarga 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 Herramientas de compilación.

    Notas para Visual Studio C ++ 2017

    Si no necesita Visual Studio IDE, descargue Herramientas de compilación para Visual Studio 2017.

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

De acuerdo a @srodriguex, puede omitir cargar manualmente el archivo por lotes (Pasos 4-6) al copiar algunos archivos por lotes en donde Python está buscando siguiendo esta respuesta. Si eso no funciona, aquí están los siguientes pasos que originalmente me funcionaron.

  1. Abre una cmd.exe

  2. antes de intenta instalar algo que requiere extensiones C, ejecute el siguiente archivo por lotes para cargar el entorno del compilador de 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 se pueden ejecutar en una instalación de Windows de 32 bits.

    Actualizar:
    Si por alguna razón estás recibiendo 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, ejecuta la configuración a través de 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.


146
2017-08-04 16:48



¿Que esta pasando? Los módulos de Python pueden ser parte escrita en C o C ++ (típicamente por velocidad). Si intenta instalar dicho paquete con Pip (o setup.py), tiene que compilar ese C / C ++ desde la fuente. Fuera de la caja, Pip asumirá descaradamente que el compilador Microsoft Visual C ++ está instalado. Si no lo tiene, verá este mensaje de error críptico "Error: no se puede encontrar vcvarsall.bat".

La solución prescrita es instalar un compilador C / C ++, ya sea Microsoft Visual C ++, o MinGW (un proyecto de código abierto). Sin embargo, instalar y configurar cualquiera de ellos es prohibitivamente difícil. (Edición 2014: Microsoft ha publicado un especial Compilador C ++ para Python 2.7)

La solución más fácil es usar los instaladores de Windows de Christoph Gohlke (.msi) para los populares paquetes de Python. Construye instaladores para Python 2.xy 3.x, 32 bit y 64 bit. Puedes descargarlos de http://www.lfd.uci.edu/~gohlke/pythonlibs/


Si usted también piensa "Error: no se puede encontrar vcvarsall.bat" es un mensaje ridículamente críptico e inútil, entonces coméntelo sobre el error en http://bugs.python.org/issue2943 para reemplazarlo con un mensaje más útil y fácil de usar.

A modo de comparación, Ruby se envía con un gestor de paquetes Gem y ofrece un compilador C / C ++ casi oficial, DevKit. Si intenta instalar un paquete sin él, verá este útil y útil mensaje útil:

Actualice su RUTA para incluir herramientas de compilación o descargue DevKit de http://rubyinstaller.org/downloads y siga las instrucciones en http://github.com/oneclick/rubyinstaller/wiki/Development-Kit

Puede leer una diatriba más larga sobre el empaque de Python en https://stackoverflow.com/a/13445719/284795


70
2017-08-02 13:48



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 algunos ajustes)

Microsoft ahora suministra un compilador y encabezados integrados sólo para poder compilar 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 es necesario 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, busca el MSC cadena de versión; si esto es MSC v.1500 puedes 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 (a.k.a. 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 más nuevo instalado (enumerado 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.


63
2017-09-30 18:23



Acabo de tener el mismo problema, así que contaré mi historia aquí esperando que ayude a alguien más con los mismos problemas y les ahorro el par de horas que acabo de pasar:

Tengo mingw (g ++ (GCC) 4.6.1) y python 2.7.3 en un cuadro de Windows 7 y estoy tratando de instalar PyCrypto.

Todo comenzó con este error al ejecutar la instalación de setup.py:

error: Unable to find vcvarsall.bat

Solucionado fácilmente después de googlear el error especificando mingw como el compilador de elección:

setup.py install build --compiler=mingw32

El problema es que luego recibí un error diferente:

configure: error: cannot run C compiled programs.

Resultó que mi antivirus estaba bloqueando la ejecución de un .exe recién compilado. Inhabilité el "escudo residente" del antivirus y pasé al siguiente error:

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

Esto lo resolvió: "Instale una versión ligeramente anterior de MinGW o edite distutils \ cygwinccompiler.py en su directorio de Python para eliminar todas las instancias de -mno-cygwin". (de aquí)

Ahora, finalmente puedo empezar a trabajar.


55
2018-05-08 15:31



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

python setup.py install -c mingw32

23
2018-05-12 10:44



Tengo Python 2.73 y Windows 7. La solución que funcionó para mí fue:

  1. Se agregó el directorio bin de mingw32 a la variable de entorno: append CAMINO con C:\programs\mingw\bin;
  2. Creado distutils.cfg situado en C:\Python27\Lib\distutils\distutils.cfg que contiene:

    [build]
    compiler=mingw32
    

Para hacer frente a MinGW que ya no reconoce el distintivo -mno-cygwin, elimine el indicador en la línea 322 a 326 de C: \ Python27 \ Lib \ distutils \ cygwincompiler.py, por lo que se ve así:

  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))

20
2018-03-30 13:00



Mira en el setup.py archivo del paquete que está tratando de instalar. Si se trata de un paquete anterior, puede estar importando distutils.core.setup() más bien que 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 python setup.py build en lugar de usar pip.

Si usa una versión reciente de pip, forzará (monkeypatch) el paquete para usar setuptools, incluso si es setup.py pide distutils. Sin embargo, si no estás usando pip, y en cambio solo lo estás haciendo python setup.py build, el proceso de construcción usará distutils.core.setup(), que no sabe acerca de 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: Construye e instala

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


16
2018-02-19 22:00



Tal vez alguien pueda estar interesado, lo siguiente funcionó para mí para el paquete py2exe. (Tengo Windows 7 de 64 bits y Portable Python 2.7, Visual Studio 2005 Express con Windows SDK para Windows 7 y .NET Framework 4)

set VS90COMNTOOLS=%VS80COMNTOOLS%

entonces:

python.exe setup.py install

9
2018-04-05 11:20