python setup py - error: no se puede encontrar vcvarsall.bat





15 Answers

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

  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: añada c:\programs\MinGW\bin; al CAMINO
  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 ejecuta easy_install.exe amara .

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

egg_info failed with

Intenté instalar el paquete de Python dulwich :

pip install dulwich

Pero me sale un mensaje de error críptico:

error: Unable to find vcvarsall.bat

Lo mismo sucede si intento instalar el paquete manualmente:

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



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ó (el ejemplo se muestra a continuación).

    Es importante usar la versión correspondiente del compilador de Visual C ++ con la que se compiló Python, ya que distilutils de get_build_version evita la mezcla de 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 a continuación [1] para hacer coincidir 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 ++ del paso anterior.
    Notas adicionales para versiones específicas de VC ++ se enumeran a continuación.

    Notas para Visual Studio C ++ 2008

    Para solo 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 las Developer Tools >> Visual C++ Compilers para ahorrar tiempo y espacio en disco de la instalación de las herramientas del SDK que de otra forma 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 para 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 el IDE de Visual Studio, descargue Visual Studio C ++ 2015 Build Tools .

    Notas para Visual Studio C ++ 2017

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

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

De acuerdo con @srodriguex , es posible que pueda omitir la carga manual del archivo por lotes (Pasos 4-6) copiando unos cuantos archivos por lotes a donde Python está buscando siguiendo esta respuesta . Si eso no funciona, aquí están los siguientes pasos que originalmente funcionaron para mí.

  1. Abre un cmd.exe

  2. Antes de intentar instalar algo que requiera extensiones de C, ejecute el siguiente archivo de proceso por lotes para cargar el entorno del compilador VC ++ en la sesión (es decir, las 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 de 64 bits nativos 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, lo que es más importante, la diferencia entre amd64 y x86_amd64 , las primeras son para las herramientas nativas del compilador de 64 bits y las segundas 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á obteniendo un error: ... was unexpected at this time. donde ... es una serie de caracteres, entonces debe verificar que su variable de ruta no tenga caracteres extraños como citas extra o caracteres extraviados. El archivo por lotes no podrá actualizar la ruta de su sesión si no tiene sentido en primer lugar.

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

    Para las herramientas de compilación de 32 bits:
    Setting environment for using Microsoft Visual Studio 20xx x86 tools.

    Para las herramientas de compilación de 64 bits:
    Setting environment for using Microsoft Visual Studio 20xx x64 tools.

  4. Ahora , ejecute la configuración a través de python setup.py install o pip install pkg-name

  5. Espere y cruce los dedos para que los planetas estén alineados correctamente para que VC ++ coopere.




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

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

Microsoft Visual C ++ Compiler 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 requiere reinicio. 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 puedes usar esta herramienta.

Desde el anuncio original hasta la lista de distutils :

Microsoft ha lanzado un paquete de compilación 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 crear 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 construidas 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 reciente 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 detección automática no funcionará.

Microsoft ha declarado que desean mantener la URL estable, de modo que los scripts automatizados puedan hacer referencia a ella fácilmente.




Parece que está buscando compiladores de VC, así que podrías intentar mencionar el tipo de compilador con -c mingw32 , ya que tienes msys

python setup.py install -c mingw32



Busque en el archivo setup.py del paquete que está intentando instalar. Si es 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 utiliza distutils.core.setup()

  3. Tratando de hacer python setup.py build lugar de usar pip .

Si usa una versión reciente de pip, forzará (monkeypatch) el paquete a usar setuptools, incluso si su setup.py requiere distracciones. 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 de 32 bits" (si su python es de 32 bits) o "Símbolo del sistema de Visual C ++ 2008 de 64 bits" (si su python es de 64 bits) . Ejecutarlo. El símbolo del sistema debe indicar 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: Construir e instalar

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




Pasé casi 2 días descubriendo cómo solucionar este problema en mi versión de Python 3.4 64 bit: 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. instale Microsoft Windows SDK v7.1 para Windows 7
  3. cree 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 donde tengas instalado el tuyo
  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 el SDK de Windows 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 del comando pip install numpy mi antivirus avast intentó interferir en el proceso de instalación, pero lo deshabilité rápidamente

Me tomó mucho tiempo, me costó varios minutos compilar, incluso pensé que había un error, pero finalmente todo estuvo bien.

Solución 2, fácil: (Sé que este enfoque ya se ha mencionado en una answer altamente votada, pero permítame repetirlo, ya que realmente es más fácil) Después de pasar por todo este trabajo, comprendí que la mejor manera para mí es usarlo. binarios precompilados de http://www.lfd.uci.edu/~gohlke/pythonlibs/ en el futuro. Hay muy pocas posibilidades de que 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 64-bit) de ese sitio
  2. en el símbolo del sistema o 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 abra el símbolo del sistema)



Quería ejecutar pysph en Windows 10 bajo Python 2.7 y obtuve vcvarsall.bat no se encontró (de distutils)

Mi solución fue la siguiente:

Instale Microsoft Visual C ++ para Python 2.7 (como sugirió @Michael)

En Windows 10 se instaló en (mi nombre de usuario es Andreas):

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

Establezca la variable de entorno VS90COMNTOOLS en la ruta de instalación de Visual C ++ para Python 2.7 (consulte la ruta anterior).

Si todavía no funciona, entonces modifíquelo en el módulo.

C:/Python27/lib/distutils

El archivo msvc9compiler.py . Encuentre en ella la función find_vcvarsall y haga la siguiente modificación.

Reemplace la línea:

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

con

productdir = os.path.join(toolsdir)

Aquí es donde reside vcvarsall.bat en mi caso (verifique dónde se encuentra vcvarsall.bat en su instalación).




Puede descargar la edición gratuita de Visual C ++ 2008 Express desde go.microsoft.com/?linkid=7729279 , que establecerá la variable de entorno VS90COMNTOOLS durante la instalación y, por lo tanto, compilará con un compilador compatible.

Como @PiotrDobrogost mencionó en un comentario, su respuesta a esta otra pregunta entra en detalles sobre por qué Visual C ++ 2008 es lo correcto con lo que se debe compilar, pero esto puede cambiar a medida que la versión de Python en Windows se traslada a nuevas versiones de Visual Studio: compilación de lxml para Python 2.7 en Windows




Probé muchas soluciones, pero solo una me funcionó, la instalación de Microsoft Visual Studio 2008 Express C ++.

Conseguí este problema con un módulo Python 2.7 escrito en C (yEnc, que tiene otros problemas con MS VS). ¡Tenga en cuenta que Python 2.7 está construido con la versión MS VS 2008, no 2010!

A pesar de que es gratuito, es bastante difícil de encontrar ya que MS promueve VS 2010. Sin embargo, los enlaces muy directos oficiales de MSDN siguen funcionando: visite https://.com/a/15319069/2227298 para obtener enlaces de descarga.







No sé si es demasiado tarde, pero encontré el microsoft.com/en-us/download/details.aspx?id=44266 que lee

El mensaje de error típico que recibirá si necesita este paquete de compilador es No se puede encontrar vcvarsall.bat

¡Espero que esto ayude!




Los siguientes pasos solucionaron este problema para mí, estaba intentando crear una configuración con la extensión cython.

  1. Instale el compilador de Microsoft Visual C ++ para Python 2.7
  2. La ubicación de instalación predeterminada sería @ C: \ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ para Python Esto podría solucionar el problema, pruebe una vez antes de continuar.
  3. Si falla, verifique dónde se encuentra el archivo vcvarsall.bat en VC ++ para Python
  4. Abra el archivo msvc9compiler.py del paquete distutils en el bloc de notas.
  5. En mi casilla, esta fue la función @ C: \ Anaconda2 \ Lib \ distutils \ msvc9compiler.py find_vcvarsall en este archivo, determine la versión de VC imprimiendo el argumento de la versión. Para Python 2.7 es probable que sea 9.0
  6. Ahora cree una variable de entorno VS90COMNTOOLS, apuntando a C: \ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ para Python \ 9.0 \ VC \ bin
  7. Por alguna razón, distutils espera que el archivo vcvarsall.bat esté dentro del directorio de VC, pero VC ++ para las herramientas de python lo tiene en la raíz de 9.0. Para solucionar esto, elimine "VC" de la ruta.

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

Los pasos anteriores solucionaron el problema para mí.




Con Python 3.4, la dependencia está en Visual Studio 2010. La instalación de Visual C ++ 2010 Express solucionó el problema.

Engañándolos para que usen las instalaciones de VS 2008 o 2013 que, por casualidad, no funcionaron.




La respuesta dada por @monkey es una de las correctas, pero está incompleta.

En caso de que desee utilizar MinGW , debe seleccionar C, C ++ y otras herramientas de desarrollo sugeridas durante el proceso de instalación de MinGW para obtener "make.exe".

También debe tener la ruta establecida para make.exe en la env.

Para completar su respuesta, aquí están los pasos:

  1. Agregue el directorio bin de mingw32 a sus variables de entorno
  2. Anexar C:\Programs\MinGW\bin;C:\Programs\MinGW\msys\1.0\bin;al PATH
  3. Edite (cree si no existe) el distutils.cfgarchivo ubicado en C:\Python26\Lib\distutils\distutils.cfg:

    [build]
    compiler=mingw32
    

Asegúrese de que las variables de entorno estén establecidas abriendo un nuevo cmd.exe.




La solución más rápida :

Si tiene Python 3.4.x , la solución es simplemente instalar VC ++ 2010, ya que se utiliza para compilarse.

https://www.visualstudio.com/en-us/downloads#d-2010-express

mi versión de python es MSC v.1600 32 bit (intel)] en win32

funcionó bien en Windows8




Related