¿Cómo instalo PyCrypto en Windows?

140

He leído todas las demás fuentes de Google y SO thread, sin que nada funcione.

Python 2.7.3 32bitinstalado en Windows 7 64bit. Descargue, extraiga y luego intente instalar PyCrypto resultados en"Unable to find vcvarsall.bat".

Así que instalo MinGW y agrego eso en la línea de instalación como el compilador de elección. Pero luego me sale el error"RuntimeError: chmod error".

¿Cómo diablos puedo evitar esto? Intenté usar pip, que da el mismo resultado. Encontré un binario PyCrypto 2.3 precompilado y lo instalé, pero no se encuentra en ninguna parte del sistema (no funciona).

¿Algunas ideas?

Coldblackice
fuente
16
Si solo desea instalarlo , simplemente descargue el instalador binario PyCrypto
bobobobo
12
Ese es un consejo muy audaz, instalar un paquete de criptografía binaria desde un servidor desconocido del extranjero ...
Darren Ringer
A pesar de que terminé con la respuesta elegida, finalmente cedí y logré construir el paquete yo mismo (aunque, por supuesto, no me molesté en verificar ninguna firma en nada, porque realmente, ¿estamos realmente seguros?) Paranoia y apatía aparte, sin embargo, el siguiente enlace resolvió todos mis problemas más difíciles e hizo que el proceso fuera fácil: blog.victorjabur.com/2011/06/05/…
Darren Ringer
44
PyCrypto está muerto. El autor lo ha dejado caer por un tiempo. github.com/dlitz/pycrypto/issues/173
Smit Johnth

Respuestas:

184

Si aún no tiene instalado un entorno de desarrollo C / C ++ que sea compatible con los archivos binarios de Visual Studio distribuidos por Python.org, entonces debe apegarse a instalar solo paquetes Python puros o paquetes para los que esté disponible un binario de Windows.

Afortunadamente, hay binarios PyCrypto disponibles para Windows: http://www.voidspace.org.uk/python/modules.shtml#pycrypto

ACTUALIZACIÓN:
Como @Udi sugiere en el comentario a continuación, el siguiente comando también se instala pycryptoy puede usarse virtualenvtambién:

easy_install http://www.voidspace.org.uk/python/pycrypto-2.6.1/pycrypto-2.6.1.win32-py2.7.exe

Aviso para elegir el enlace relevante para su configuración de esta lista

Si está buscando compilaciones para Python 3.5, consulte PyCrypto en python 3.5

Michael Dillon
fuente
28
puede usar easy_install para instalar los archivos binarios desde la url:easy_install http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win32-py2.7.exe
Udi
El instalador en voidspace.org.uk/python/modules.shtml#pycrypto funcionó para mí. Un consejo: si accidentalmente ejecuta el instalador de 64 bits pero tiene una versión de Python 2.7 de 32 bits, el instalador fallará con la alerta "Se requiere la versión 2.7 de Python, que no se encontró en el registro".
Steve Saporta
1
El instalador de GUI falló para mí. easy_install se realizó correctamente
pscheit
@Udi, ¿por qué necesitas easy_install para un exe?
Smit Johnth
@SmitJohnth easy_installinstalará el paquete en un virtualenv (si tiene uno) y suprimirá toda interacción gráfica (para automatizar o simplemente ahorrar tiempo).
Udi
32

Microsoft ha lanzado recientemente un compilador independiente y dedicado de Microsoft Visual C ++ para Python 2.7 . Si está utilizando Python 2.7, simplemente instale ese compilador y Setuptools 6.0 o posterior, y la mayoría de los paquetes con extensiones C ahora se compilarán fácilmente.

Jason R. Coombs
fuente
Wow, que interesante. Pero aún así 84 Mb. Y un poco tarde, mira mi respuesta sobre la rueda.
Smit Johnth
1
Incluso con la rueda, esta es una opción mucho mejor que golpearse la cabeza contra VS 2008 y vcvarsall.bat para los momentos en que desea construir algo desde la fuente, o usar un módulo que no tiene una rueda. MSVC para Python podría no estar disponible en el "largo plazo", pero es extremadamente útil en este momento.
GrandOpener
1
Sigue siendo la solución más fácil que he encontrado; Siempre he odiado tener que depender de binarios preconstruidos de sitios web aleatorios (para mí).
Myk Willis
28

Después de años y años , Python finalmente acordó una distribución binaria llamada wheelque permite instalar incluso extensiones binarias en Windows sin tener un compilador simple pip install packagename. Hay una lista de paquetes populares con su estado. Pycrypto aún no está allí, pero lxml, PySide y Scrapy, por ejemplo.

Editado en noviembre de 2015 : pip uninstall pycrypto& pip install pycryptodome. Es una pycryptohorquilla con nuevas características y es compatible con la rueda. Sustituye pycrypto, por lo que el código existente continuará funcionando (consulte https://pycryptodome.readthedocs.org/en/latest/src/examples.html )

Smit Johnth
fuente
20

Para VS2010:

SET VS90COMNTOOLS=%VS100COMNTOOLS%

Para VS2012:

SET VS90COMNTOOLS=%VS110COMNTOOLS%

luego llame:

pip install pyCrypto 
Chandan
fuente
1
Para VS2013: SET VS90COMNTOOLS =% VS120COMNTOOLS%
Jake1164
2
Si bien esto puede funcionar en ciertos casos, esto NO es una solución. ¡Debe asegurarse de que las dependencias se compilan con el mismo compilador con el que se compiló Python!
Daniel van Flymen
1
¿Qué tal VS2017? ¿Qué debo configurar?
mahshid.r
1
@ mahshid.r puede verificar las variables de entorno para VSxxxCOMNTOOLS y obtener el nombre de la variable, luego establecer la variable VS90COMNTOOLS en el valor VSxxxCOMNTOOLS. En CMD: 1. "SET VS90COMNTOOLS =% VS140COMNTOOLS%" 2. pip install pyCrypto
Oriel Cochavi
18

En general

vcvarsall.bates parte del compilador de Visual C ++, lo necesita para instalar lo que está intentando instalar. Ni siquiera trate de lidiar con MingGW si su Python se compiló con la cadena de herramientas de Visual Studio y viceversa. Incluso la versión de la cadena de herramientas de Microsoft es importante. ¡Python compilado con VS 2008 no funcionará con extensiones compiladas con VS 2010!

Debe compilar PyCrypto con el mismo compilador con el que se compiló la versión de Python. Google para "No se puede encontrar vcvarsall.bat" porque esa es la raíz de su problema, es un problema muy común al compilar extensiones de Python en Windows.

Hay mucha información y mucho que leer para acertar en cualquier sistema en el que se encuentre con este enlace.

Tenga cuidado al usar Visual Studio 2010 o no usar Visual Studio 2008

Hasta donde yo sé, lo siguiente sigue siendo cierto. Esto se publicó en el enlace anterior en junio de 2010 en referencia a tratar de construir extensiones con VS 2010 Express contra los instaladores de Python disponibles en python.org.

Ten cuidado si haces esto. Python 2.6 y 2.7 de python.org están construidos con compiladores de Visual Studio 2008. Deberá vincular con el mismo CRT (msvcr90.dll) que Python.

Visual Studio 2010 Express se vincula con la versión incorrecta de CRT: msvcr100.dll.

Si hace esto, también debe reconstruir Python con Visual Studio 2010 Express. No puede usar el instalador binario estándar de Python para Windows. Tampoco puede usar ninguna extensión C / C ++ creada con un compilador diferente al de Visual Studio 2010 (Express).

Opinión: ¡Esta es una razón por la que abandoné Windows por todo el trabajo de desarrollo serio para OSX!

Comunidad
fuente
2
Gracias por la perspicacia. Pero, cielos, ¿tiene que ser realmente tedioso (la frustración dirigida a los dioses pitón, no a ti mismo)? Solo intenté instalar otro paquete (mcrypt), tanto a través de setup.py como pip, ambos saliendo con errores. ¿Cómo demonios los usuarios de Windows instalan paquetes? ¿Todos tienen que descargar VS 2008 Express? (Tengo VS 2010, que supongo que no hace el trabajo).
Coldblackice
1
no, no lo hace; no es así en OSX o Linux. En Windows puede instalar archivos binarios precompilados para las distribuciones de Python predeterminadas si puede encontrarlos , el material de criptografía generalmente no está disponible debido a las restricciones de exportación tontas en los EE. UU. Pero, ¿realmente desea instalar bibliotecas de cifrado que no compiló desde la fuente usted mismo? ¿Qué tan seguro es eso? Quiero decir, ¿cómo sabes que no se vieron comprometidos de alguna manera?
"Opinión: ¡Esta es una razón por la que abandoné Windows por todo el trabajo de desarrollo serio para OSX!" Sí ... descargué Python antes de tener cualquier tipo de compilador de C en mi dispositivo ... Luego, obtuve Visual Studio 2013 para hacer un poco con Visual Basic ... Luego, obtuve MinGW para poder usar GCC para compilar C en Windows. En resumen, aunque algo de esto puede ser mi culpa, no tengo idea de qué entorno de desarrollo intentaría usar Python. Afortunadamente, hay muchos paquetes de python disponibles en binarios en línea, incluido pycrypto.
trevorKirkby
15

PyCryptodome es una bifurcación casi compatible de PyCrypto con ruedas de Windows disponible en pypi .

Puedes instalarlo con un simple:

pip install pycryptodome

El sitio web incluye instrucciones para construirlo desde fuentes con los compiladores de Microsoft también.

SquareRootOfTwentyThree
fuente
6

He logrado pycryptocompilar usando MinGW32y MSYS. Esto presume que tienes pipo estás easy_installinstalado.

Así es como lo hice:

1) Instalar MinGW32 . En aras de esta explicación, supongamos que está instalado en C:\MinGW. Cuando use el instalador, que recomiendo, seleccione el compilador de C ++ que . MSYS debe instalar conMinGW

2) Agregar c:\mingw\bin,c:\mingw\mingw32\bin,C:\MinGW\msys\1.0, c:\mingw\msys\1.0\bin and c:\mingw\msys\1.0\sbin a tu %PATH%. Si no está familiarizado, este artículo es muy útil.

3) Desde la barra de búsqueda, ejecute msysy se abrirá el terminal MSYS. Para aquellos familiarizados Cygwin, funciona de manera similar.

4) Desde dentro del terminal MSYS pip install pycryptodebe ejecutarse sin error después de esto.

darnold0714
fuente
Parece que su solución carece de algunos pasos. es posible que desee elaborar un poco más sobre esta solución.
Rusty Weber
5

Para Windows 7:

Para instalar Pycrypto en Windows,

Prueba esto en el símbolo del sistema,

Establecer ruta = C: \ Python27 \ Scripts (es decir, ruta donde se encuentra easy_install)

Luego ejecute lo siguiente,

pycrypto easy_install

Para Ubuntu:

Prueba esto,

Descargue Pycrypto desde " https://pypi.python.org/pypi/pycrypto "

Luego cambie su ruta actual a ruta descargada usando su terminal y el usuario debe ser root:

Por ejemplo: root @ xyz-virtual-machine: ~ / pycrypto-2.6.1 #

Luego ejecute lo siguiente usando el terminal:

instalación de python setup.py

Me ha funcionado. La esperanza funciona para todos.

JayaPrakash
fuente
Ejecuté esto en Windows 7 y la primera vez que recibí un error: "error: el script de instalación salió con un error: se requiere Microsoft Visual C ++ 9.0 (No se puede encontrar vcvarsall.bat). Obtenlo en aka.ms/vcpython27 ". Instalé eso, ejecuté el comando nuevamente y esta vez funcionó.
arie
5

Para aquellos de ustedes que buscan python 3.4, encontré un repositorio de git con un instalador que simplemente funciona. Aquí están los enlaces directos para x64 y x32

usuario25064
fuente
4

Es posible construir PyCrypto usando los kits de herramientas del SDK de Windows 7. Hay dos versiones del SDK de Windows 7. La versión original (para .Net 3.5) incluye los compiladores de línea de comandos VS 2008. Se pueden instalar compiladores de 32 y 64 bits.

El primer paso es compilar mpir para proporcionar una aritmética rápida. He documentado el proceso que uso en la biblioteca gmpy . Las instrucciones detalladas para construir mpir usando el compilador SDK se pueden encontrar en sdk_build

Los pasos clave para usar los compiladores SDK desde un indicador de DOS son:

1) Ejecute vcvars32.bat o vcvars64.bat según corresponda.

2) En el indicador, ejecute "set MSSdk = 1"

3) En el indicador, ejecute "set DISTUTILS_USE_SDK = 1"

Esto debería permitir que "python setup.py install" tenga éxito suponiendo que no haya otros problemas con el código C. Pero recuerdo vagamente que tuve que editar un par de archivos PyCrypto para habilitar mpir y encontrar las bibliotecas mpir, pero no tengo mi sistema Windows en este momento. Pasarán un par de días antes de que tenga tiempo de recrear los pasos. Si no ha informado el éxito para entonces, publicaré los pasos de PyCrypto. Los pasos supondrán que pudo compilar mpir.

Espero que esto ayude.

casevh
fuente
3

Así que instalo MinGW y agrego eso en la línea de instalación como el compilador de elección. Pero luego aparece el error "RuntimeError: error chmod".

Este error "RuntimeError: chmod error"ocurre porque el script de instalación no encontró el chmodcomando.

¿Cómo puedo evitar esto?

Solución

Solo necesita agregar los binarios de MSYS a la RUTA y volver a ejecutar el script de instalación .

(Nota: tenga en cuenta que MinGW viene con MSYS)

Ejemplo

Por ejemplo, si estamos en la carpeta C:\<..>\pycrypto-2.6.1\dist\pycrypto-2.6.1>

C:\.....>set PATH=C:\MinGW\msys\1.0\bin;%PATH%
C:\.....>python setup.py install

Opcional: es posible que deba limpiar antes de volver a ejecutar el script:

`C:\<..>\pycrypto-2.6.1\dist\pycrypto-2.6.1> python setup.py clean`
Bludzee
fuente
3
  1. Vaya a " Compilador de Microsoft Visual C ++ para Python 2.7 " y continúe según los "Requisitos del sistema" (esto es lo que hice para poner juntos los pasos a continuación).

  2. Instale setuptools (se requiere setuptools 6.0 o posterior para que Python detecte automáticamente este paquete del compilador) ya sea por: pip install setuptools o descargue la fuente "Setuptools bootstrapping installer" desde , guarde este archivo en algún lugar de su sistema de archivos como "ez_python.py" e instálelo con:python ez_python.py

  3. Instale la rueda (se recomienda la rueda para producir paquetes binarios preconstruidos). Puedes instalarlo con:pip install wheel

  4. Abra el símbolo del sistema elevado de Windows cmd.exe (con "Ejecutar como administrador") para instalar "Microsoft Visual C ++ Compiler for Python 2.7" para todos los usuarios. Puede usar el siguiente comando para hacerlo: msiexec / C:\users\jozko\download\VCForPython27.msi ALLUSERS=1simplemente uso su propia ruta al archivo:msiexec /i <path to MSI> ALLUSERS=1

  5. Ahora debería poder instalar pycrypto con: pip install pycrypto

damian1baran
fuente
3

Si está en Windows y tiene dificultades para instalar Pycrypcto, simplemente use: pip install pycryptodome. Funciona como un milagro y te hará la vida mucho más fácil que intentar hacer muchas configuraciones y ajustes.

Juan
fuente
2

Probablemente esta no sea la solución óptima, pero puede descargar e instalar el paquete gratuito Visual C ++ Express de MS. Esto le dará el compilador de C ++ que necesita para compilar el código PyCrypto.

sizzzzlerz
fuente
2

Mi respuesta podría no estar relacionada con el problema mencionado aquí, pero tuve el mismo problema con Python 3.4 donde Crypto.Cipher no era una importación válida. Así que intenté instalar PyCrypto y tuve problemas.

Después de algunas investigaciones que encontré con 3.4 deberías usar pycryptodome .

Instalé pycryptodome usando pycharm y estuve bien.

de Crypto.Cipher import AES

Virendra Patel
fuente
1

Así que instalo MinGW y agrego eso en la línea de instalación como el compilador de elección. Pero luego aparece el error "RuntimeError: error chmod".

Necesita instalar el paquete msys en MinGW

ingrese la descripción de la imagen aquí

y agregue las siguientes entradas en su variable PATH env.

  • C:\MinGW\bin
  • C:\MinGW\msys\1.0\bin [Aquí es donde encontrará ejecutable chmod]

Luego ejecute su comando desde el símbolo del sistema normal de Windows.

Aniket Thakur
fuente
0

Debido a razones legales extrañas, los archivos binarios no se publican de la manera normal. Voidspace es normalmente la mejor segunda fuente. Pero desde hace bastante tiempo, el mantenedor de espacios vacíos no se actualizó. Utilice el zip de [ https://www.dropbox.com/s/n6rckn0k6u4nqke/pycrypto-2.6.1.zip?dl=0]

Zimmermann
fuente
2
Descarga binarios de dropbox. No wai.
Smit Johnth
Descargué el binario y lo escaneé con VirusTotal. Por supuesto, eso solo significa que no tiene un virus, no es que no tenga una puerta trasera criptográfica. Afortunadamente, solo lo estoy usando para el desarrollo porque estoy alojando este proyecto en PythonAnywhere.
Range vs. Range
0

Paso 1: Instale Visual C ++ 2010 Express desde aquí .

(No instale Microsoft Visual Studio 2010 Service Pack 1)

Paso 2: elimine todos los paquetes redistribuibles de Microsoft Visual C ++ 2010 del Panel de control \ Programas y características. Si no lo hace, la instalación fallará con un oscuro error "Error grave durante la instalación".

Paso 3: Instale la versión sin conexión de Windows SDK para Visual Studio 2010 (v7.1) desde aquí . Esto es necesario para extensiones de 64 bits. Windows tiene montaje incorporado para ISO como Pismo.

Paso 4: debe instalar el archivo ISO con el paquete Pismo File Mount Audit. Descarga Pismo desde aquí

Paso 5: Haz clic derecho en el archivo ISO descargado y elige montar con Pismo. Posteriormente, instale Setup \ SDKSetup.exe en lugar de setup.exe.

Paso 6a: Cree un archivo vcvars64.bat en C: \ Archivos de programa (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64 cambiando el directorio a C: \ Archivos de programa (x86) \ Microsoft Visual Studio versión \ VC \ on El símbolo del sistema. Escriba command en el símbolo del sistema: cd C:\Program Files (x86)\Microsoft Visual Studio version\VC\r

Paso 6b: para configurar esta ventana del símbolo del sistema para compilaciones de línea de comandos de 64 bits que se dirigen a plataformas x86, en el símbolo del sistema, ingrese: vcvarsall x86Haga clic en aquí para obtener más opciones.

Paso 7: en el símbolo del sistema, instale PyCrypto escribiendo: C:\Python3X>pip install -U your_wh_file

Asubiaro Toluwase Victor
fuente
0

Tenía Pycharm para python.

  1. Ir pycharm -> file -> setting -> project interpreter

  2. Haga clic en +

  3. Busque "pycrypto"e instale el paquete

Nota: Si no tiene instalado el "Compilador de Microsoft Visual C ++ para Python 2.7", solicitará la instalación, una vez que la instalación haya finalizado, intente los pasos anteriores, debería funcionar bien.

RAKESH
fuente