Error al instalar el paquete Python Cryptography con PIP y setup.py

256

Cuando intento instalar el paquete Cryptography para Python a través de cualquiera de los dos pip install cryptographyo descargándolos de su sitio y ejecutándolos python setup.py, aparece el siguiente error:


D:\Anaconda\Scripts\pip-script.py run on 02/27/14 16:13:17
Downloading/unpacking cryptography
  Getting page https://pypi.python.org/simple/cryptography/
  URLs to search for versions for cryptography:
  * https://pypi.python.org/simple/cryptography/
  Analyzing links from page https://pypi.python.org/simple/cryptography/
    Skipping https://pypi.python.org/packages/cp26/c/cryptography/cryptography-0.2-cp26-none-win32.whl#md5=13e5c4b19520e7dc6f07c6502b3f74e2 (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Skipping https://pypi.python.org/packages/cp26/c/cryptography/cryptography-0.2.1-cp26-none-win32.whl#md5=00e733648ee5cdb9e58876238b1328f8 (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Skipping https://pypi.python.org/packages/cp27/c/cryptography/cryptography-0.2-cp27-none-win32.whl#md5=013ccafa6a5a3ea92c73f2c1c4879406 (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Skipping https://pypi.python.org/packages/cp27/c/cryptography/cryptography-0.2.1-cp27-none-win32.whl#md5=127d6a5dc687250721f892d55720a06c (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Skipping https://pypi.python.org/packages/cp32/c/cryptography/cryptography-0.2-cp32-none-win32.whl#md5=051424a36e91039807b72f112333ded3 (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Skipping https://pypi.python.org/packages/cp32/c/cryptography/cryptography-0.2.1-cp32-none-win32.whl#md5=53f6f57db8e952d64283baaa14cbde3d (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Skipping https://pypi.python.org/packages/cp33/c/cryptography/cryptography-0.2-cp33-none-win32.whl#md5=302812c1c1a035cf9ba3292f8dbf3f9e (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Skipping https://pypi.python.org/packages/cp33/c/cryptography/cryptography-0.2.1-cp33-none-win32.whl#md5=81acca90caf8a45f2ca73f3f9859fae4 (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Found link https://pypi.python.org/packages/source/c/cryptography/cryptography-0.1.tar.gz#md5=bdc1c5fe069deca7467b71a0cc538f17 (from https://pypi.python.org/simple/cryptography/), version: 0.1
    Found link https://pypi.python.org/packages/source/c/cryptography/cryptography-0.2.1.tar.gz#md5=872fc04268dadc66a0305ae5ab1c123b (from https://pypi.python.org/simple/cryptography/), version: 0.2.1
    Found link https://pypi.python.org/packages/source/c/cryptography/cryptography-0.2.tar.gz#md5=8a3d21e837a21e1b7634ee1f22b06bb6 (from https://pypi.python.org/simple/cryptography/), version: 0.2
  Using version 0.2.1 (newest of versions: 0.2.1, 0.2, 0.1)
  Downloading from URL https://pypi.python.org/packages/source/c/cryptography/cryptography-0.2.1.tar.gz#md5=872fc04268dadc66a0305ae5ab1c123b (from https://pypi.python.org/simple/cryptography/)
  Running setup.py (path:c:\users\paco\appdata\local\temp\pip_build_Paco\cryptography\setup.py) egg_info for package cryptography
    In file included from c/_cffi_backend.c:7:0:
    c/misc_win32.h:225:23: error: two or more data types in declaration specifiers
    c/misc_win32.h:225:1: warning: useless type name in empty declaration [enabled by default]
    c/_cffi_backend.c: In function 'convert_array_from_object':
    c/_cffi_backend.c:1105:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1105:26: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c:1130:30: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1130:30: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c:1150:30: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1150:30: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'convert_struct_from_object':
    c/_cffi_backend.c:1183:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1183:26: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c:1196:30: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1196:30: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'cdata_repr':
    c/_cffi_backend.c:1583:13: warning: unknown conversion type character 'L' in format [-Wformat]
    c/_cffi_backend.c:1583:13: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c:1595:9: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1595:9: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'cdataowning_repr':
    c/_cffi_backend.c:1647:30: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1647:30: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function '_cdata_get_indexed_ptr':
    c/_cffi_backend.c:1820:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1820:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1820:26: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function '_cdata_getslicearg':
    c/_cffi_backend.c:1872:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1872:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1872:26: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'cdata_ass_slice':
    c/_cffi_backend.c:1951:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1951:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1951:26: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c:1969:30: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1969:30: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1969:30: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c:1983:22: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1983:22: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'cdata_call':
    c/_cffi_backend.c:2367:30: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:2367:30: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'Py_ssize_t' [-Wformat]
    c/_cffi_backend.c:2367:30: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'cast_to_integer_or_char':
    c/_cffi_backend.c:2916:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:2916:26: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'Py_ssize_t' [-Wformat]
    c/_cffi_backend.c:2916:26: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c:2928:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:2928:26: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'Py_ssize_t' [-Wformat]
    c/_cffi_backend.c:2928:26: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'new_array_type':
    c/_cffi_backend.c:3480:9: warning: unknown conversion type character 'l' in format [-Wformat]
    c/_cffi_backend.c:3480:9: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'b_complete_struct_or_union':
    c/_cffi_backend.c:3878:22: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:3878:22: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:3878:22: warning: too many arguments for format [-Wformat-extra-args]
    Traceback (most recent call last):
      File "<string>", line 17, in <module>
      File "c:\users\paco\appdata\local\temp\pip_build_Paco\cryptography\setup.py", line 113, in <module>
        "build": cffi_build,
      File "D:\Anaconda\lib\distutils\core.py", line 112, in setup
        _setup_distribution = dist = klass(attrs)
      File "build\bdist.win-amd64\egg\setuptools\dist.py", line 239, in __init__
      File "build\bdist.win-amd64\egg\setuptools\dist.py", line 264, in fetch_build_eggs
      File "build\bdist.win-amd64\egg\pkg_resources.py", line 580, in resolve
        dist = best[req.key] = env.best_match(req, ws, installer)
      File "build\bdist.win-amd64\egg\pkg_resources.py", line 818, in best_match
        return self.obtain(req, installer) # try and download/install
      File "build\bdist.win-amd64\egg\pkg_resources.py", line 830, in obtain
        return installer(requirement)
      File "build\bdist.win-amd64\egg\setuptools\dist.py", line 314, in fetch_build_egg
      File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 593, in easy_install

      File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 623, in install_item

      File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 809, in install_eggs

      File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 1015, in build_and_install

      File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 1003, in run_setup

    distutils.errors.DistutilsError: Setup script exited with error: command 'gcc' failed with exit status 1
    Complete output from command python setup.py egg_info:
    In file included from c/_cffi_backend.c:7:0:

c/misc_win32.h:225:23: error: two or more data types in declaration specifiers

c/misc_win32.h:225:1: warning: useless type name in empty declaration [enabled by default]

c/_cffi_backend.c: In function 'convert_array_from_object':

c/_cffi_backend.c:1105:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1105:26: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c:1130:30: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1130:30: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c:1150:30: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1150:30: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'convert_struct_from_object':

c/_cffi_backend.c:1183:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1183:26: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c:1196:30: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1196:30: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'cdata_repr':

c/_cffi_backend.c:1583:13: warning: unknown conversion type character 'L' in format [-Wformat]

c/_cffi_backend.c:1583:13: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c:1595:9: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1595:9: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'cdataowning_repr':

c/_cffi_backend.c:1647:30: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1647:30: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function '_cdata_get_indexed_ptr':

c/_cffi_backend.c:1820:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1820:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1820:26: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function '_cdata_getslicearg':

c/_cffi_backend.c:1872:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1872:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1872:26: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'cdata_ass_slice':

c/_cffi_backend.c:1951:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1951:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1951:26: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c:1969:30: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1969:30: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1969:30: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c:1983:22: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1983:22: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'cdata_call':

c/_cffi_backend.c:2367:30: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:2367:30: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'Py_ssize_t' [-Wformat]

c/_cffi_backend.c:2367:30: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'cast_to_integer_or_char':

c/_cffi_backend.c:2916:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:2916:26: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'Py_ssize_t' [-Wformat]

c/_cffi_backend.c:2916:26: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c:2928:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:2928:26: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'Py_ssize_t' [-Wformat]

c/_cffi_backend.c:2928:26: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'new_array_type':

c/_cffi_backend.c:3480:9: warning: unknown conversion type character 'l' in format [-Wformat]

c/_cffi_backend.c:3480:9: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'b_complete_struct_or_union':

c/_cffi_backend.c:3878:22: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:3878:22: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:3878:22: warning: too many arguments for format [-Wformat-extra-args]

Traceback (most recent call last):

  File "<string>", line 17, in <module>

  File "c:\users\paco\appdata\local\temp\pip_build_Paco\cryptography\setup.py", line 113, in <module>

    "build": cffi_build,

  File "D:\Anaconda\lib\distutils\core.py", line 112, in setup

    _setup_distribution = dist = klass(attrs)

  File "build\bdist.win-amd64\egg\setuptools\dist.py", line 239, in __init__

  File "build\bdist.win-amd64\egg\setuptools\dist.py", line 264, in fetch_build_eggs

  File "build\bdist.win-amd64\egg\pkg_resources.py", line 580, in resolve

    dist = best[req.key] = env.best_match(req, ws, installer)

  File "build\bdist.win-amd64\egg\pkg_resources.py", line 818, in best_match

    return self.obtain(req, installer) # try and download/install

  File "build\bdist.win-amd64\egg\pkg_resources.py", line 830, in obtain

    return installer(requirement)

  File "build\bdist.win-amd64\egg\setuptools\dist.py", line 314, in fetch_build_egg

  File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 593, in easy_install



  File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 623, in install_item



  File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 809, in install_eggs



  File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 1015, in build_and_install



  File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 1003, in run_setup



distutils.errors.DistutilsError: Setup script exited with error: command 'gcc' failed with exit status 1

----------------------------------------
Cleaning up...
  Removing temporary dir c:\users\paco\appdata\local\temp\pip_build_Paco...
Command python setup.py egg_info failed with error code 1 in c:\users\paco\appdata\local\temp\pip_build_Paco\cryptography
Exception information:
Traceback (most recent call last):
  File "D:\Anaconda\lib\site-packages\pip-1.5.4-py2.7.egg\pip\basecommand.py", line 122, in main
    status = self.run(options, args)
  File "D:\Anaconda\lib\site-packages\pip-1.5.4-py2.7.egg\pip\commands\install.py", line 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "D:\Anaconda\lib\site-packages\pip-1.5.4-py2.7.egg\pip\req.py", line 1229, in prepare_files
    req_to_install.run_egg_info()
  File "D:\Anaconda\lib\site-packages\pip-1.5.4-py2.7.egg\pip\req.py", line 325, in run_egg_info
    command_desc='python setup.py egg_info')
  File "D:\Anaconda\lib\site-packages\pip-1.5.4-py2.7.egg\pip\util.py", line 697, in call_subprocess
    % (command_desc, proc.returncode, cwd))
InstallationError: Command python setup.py egg_info failed with error code 1 in c:\users\paco\appdata\local\temp\pip_build_Paco\cryptography

Encontré otras publicaciones de error de egg_info ( aquí y aquí ), pero las soluciones allí proporcionadas no resolverían mi problema. Además, puedo instalar otros paquetes a través de PIP.

PIP versión 1.5.4 setuptools versión 2.2

lavanda
fuente
PUNTERO PARA TODOS: la criptografía ahora incluye ruedas precompiladas para la mayoría de los sistemas operativos, por lo que una pip installcriptografía debería funcionar de inmediato .
Legorooj

Respuestas:

427

Tuve un problema similar y descubrí que simplemente me faltaba una dependencia (libssl-dev, para mí). Como se menciona en https://cryptography.io/en/latest/installation/ , asegúrese de que se cumplan todas las dependencias:

En Windows

Si está en Windows, deberá asegurarse de tener instalado OpenSSL. Hay binarios precompilados disponibles. Si su instalación se encuentra en una ubicación inusual, configure las variables de entorno LIB e INCLUDE para incluir las ubicaciones correspondientes. Por ejemplo:

C:\> \path\to\vcvarsall.bat x86_amd64
C:\> set LIB=C:\OpenSSL-1.0.1f-64bit\lib;%LIB%
C:\> set INCLUDE=C:\OpenSSL-1.0.1f-64bit\include;%INCLUDE%
C:\> pip install cryptography

Construyendo criptografía en Linux

la criptografía debería compilarse muy fácilmente en Linux siempre que tenga un compilador de C, encabezados para Python (si no está usando pypy) y encabezados para las bibliotecas OpenSSL y libffi disponibles en su sistema.

Para Debian y Ubuntu , el siguiente comando asegurará que las dependencias requeridas estén instaladas:

sudo apt-get install build-essential libssl-dev libffi-dev python-dev

Para Fedora y derivados de RHEL , el siguiente comando garantizará que se instalen las dependencias requeridas:

sudo yum install gcc libffi-devel python-devel OpenSSL-devel

Ahora debería poder construir e instalar criptografía con lo habitual.

pip install cryptography
jsonm
fuente
1
Gracias, funcionó perfectamente! Teniendo VS2010 tuve que: SET VS90COMNTOOLS =% VS100COMNTOOLS% y agregar el sufijo "mt" a los nombres de las
librerías
//, puedo confirmar que esto funcionó en una máquina CEntOS 6.3 con Python 3.3 con un error similar al publicado en la pregunta original.
Nathan Basanese
44
Parece que el libffi-devpaquete es la clave en absoluto. No necesitaba configurar nada más, pero el nombre del paquete no apareció en el registro de errores: - / Gracias.
m3nda
66
No olvide reemplazar python-devcon python3-devsi está usando python3
duan
1
FWIW Estoy ejecutando Debian 9 y tuve que hacer una instalación de apt-get libssl1.0-dev antes de dejar de recibir errores durante la criptografía de instalación de pip
Mike Pennington
113

Esta es una versión condensada de la información que se encuentra en la página de documentos de instalación de la criptografía . Consulte esa página para los últimos detalles.

Como esta pregunta SO sigue apareciendo, también dejaré una respuesta aquí (soy uno de los desarrolladores de pyca / cryptography). Esto es lo que necesita para instalar de manera confiable pyca / cryptography en las 3 plataformas principales.

Tenga en cuenta que en todos estos casos se recomienda encarecidamente que instale en un virtualenv y no en el espacio global del paquete. Esto no es específico de la criptografía, sino que es un consejo genérico para mantener confiable la instalación de Python. El espacio de paquete global en el sistema operativo siempre que Pythons sea propiedad del sistema y la instalación de cosas a través de pip en él está planteando problemas.

Ventanas

Actualice al último pip (8.1.2 a partir de junio de 2016) y solo pip install cryptography

la criptografía y la cffi se envían como ruedas estáticamente vinculadas.

OS X

Actualice al último pip (8.1.2 a partir de junio de 2016) y solo pip install cryptography

la criptografía y la cffi se envían como ruedas estáticamente vinculadas. Esto funcionará para pyenv Python, sistema Python, homebrew Python, etc. Mientras esté en el último pip, ni siquiera necesitará un compilador.

Linux

A partir de la versión 2.0, la criptografía incluye muchas ruedas linux1. Esto significa que los usuarios con pip 8.1+ que se ejecutan en una distribución basada en glibc (casi todo excepto Alpine Linux) y en x86 / x86-64 (lo siento, gente de Raspberry Pi) ya no necesitan un compilador o encabezados porque obtendrán una rueda precompilada automáticamente . Entonces, ¡lo primero que debes intentar es actualizar tu pip!

Si no es compatible con manylinux1, esto es lo que debe hacer:

Necesitará un compilador de C, libffi + sus encabezados de desarrollo y openssl + sus encabezados de desarrollo.

Distribuciones derivadas de Debian o Ubuntu

apt-get install build-essential libssl-dev libffi-dev python-dev seguido por

pip install cryptography

Distribuciones derivadas de Red Hat

yum install gcc openssl-devel libffi-devel python-devel seguido por

pip install cryptography

Paul Kehrer
fuente
1
He hecho esto, pero sigo recibiendo este error: "Falló la construcción de la rueda para la criptografía", seguido de una gran cantidad de resultados (demasiado para un comentario).
RolandiXor
44
La respuesta de MacOSX funcionó de maravilla en MacOS Sierra 10.12. He actualizado mi pip a la versión más reciente en este momento, 9.0.1.
João Santos
3
¡Actualice al último pip (8.1.2 a partir de junio de 2016) y solo pip instala criptografía!
Timothy Dalton
Tuve que actualizar manualmente la pipque tiene años, luego la solución OSX funciona de maravilla. ( pip 9.0.1, MacOS Sierra)
benjaminz
1
no funciona en mi windows10, obteniendo un error de compilación no se puede abrir el archivo de inclusión: 'openssl / opensslv.h'
Totte Karlsson
43

Para aquellos de ustedes que ejecutan OS X, esto es lo que funcionó para mí:

brew install openssl
env ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include"
pip install cryptography

(Ejecutando 10.9 Mavericks)

También puede intentar fusionar las banderas y los comandos de pip a lo siguiente según el comentario a continuación:

brew install openssl
env ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptography
Nick Woodhams
fuente
1
CFLAGS="-I/usr/include" pip install cryptography de Reaperhulk trabajó para mí en Mavericks.
jjr4826
Este comando en la respuesta no es correcto: la segunda y la tercera línea deben fusionarse (use una barra invertida). Entonces funciona perfectamente, solo probado en El Capitan. Este comentario anterior tampoco es correcto. Las otras configuraciones en la respuesta son necesarias, o recibirá quejas posteriores.
Christian Tismer
1
Como siempre @nathancahill HEHE
Nick Woodhams
1
Tuve que usar exportno env, pero de lo contrario funciona.
Richard
$ ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographytrabajó para mí macOS 10.12con Python3.7(en un virtualenv) cuando se necesita cryptographypara instalar ansible.
jalanb
23

Esto funcionó para mí en El Capitan

brew install pkg-config libffi openssl
env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include" pip install cryptography

También puede consultar el hilo aquí: https://github.com/pyca/cryptography/issues/2350

Dean Christian Armada
fuente
Este es el primero en esta página (y muchos, muchos otros ...) que funcionó para mí en Mojave 10.14.5, gracias. Además, las variables de entorno solo están activas para el comando en lugar de la sesión como en cualquier otro lugar.
Chris
23

Esto resolvió el problema para mí (Ubuntu 16.04):

sudo apt-get install build-essential libssl-dev libffi-dev python-dev python3-dev

y luego estaba funcionando así:

pip install cryptography
pip install pyopenssl ndg-httpsclient pyasn1
incluso
fuente
14

Aparentemente, en versiones recientes de OSX, esto puede deberse a que Apple envía su propia versión de OpenSSL, que no funciona con la biblioteca de criptografía.

Las versiones recientes de la biblioteca de criptografía se envían con sus propias dependencias nativas, pero para obtenerlas necesitará actualizar pip, y posiblemente también un entorno virtual. Entonces, para mí, la solución fue:

pip install --upgrade --force-reinstall pip virtualenv
Cam Jackson
fuente
la reinstalación virtualenv lo hizo por mí, estaba usando una versión antigua de pip que seguía fallando, ¡gracias!
Adri Van Houdt
Todavía me falla. OSX 10.11.3 El Capitan aquí.
agondiken
14

Cómo resolví "Error al limpiar el directorio de compilación para la criptografía"
(vine aquí de google para obtener este error).

nota : usando un virtualenv

TL; DR:

mi archivo /etc/apt/sources.listno estaba configurado correctamente para mi debian 8.

Explicaciones:

Quería instalar paramiko. Paramiko necesita criptografía.

Obtuve estos errores: primero con pip install cryptography:

(...)
  ----------------------------------------
  Failed cleaning build dir for cryptography
Failed to build cryptography
(...)
    ----------------------------------------
Command "/home/myuser/pyenvs/testo/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-HXWKAO/cryptography/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-WjqY6V-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/myuser/pyenvs/testo/include/site/python2.7/cryptography" failed with error code 1 in /tmp/pip-build-HXWKAO/cryptography/

y luego con sudo apt-get install build-essential:

Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 build-essential : Depends: libc6-dev but it is not going to be installed > or
                            libc-dev
                   Depends: gcc (>= 4:4.4.3) but it is not going to be installed
                   Depends: g++ (>= 4:4.4.3) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

(No son exactamente los mismos errores que OP pero estoy aquí para ayudar eventualmente )

Resolviendo:

Después de probar casi todos los comandos de cada publicación, termino en
https://wiki.debian.org/SourcesList
y copie y pegue mi configuración adecuada en el archivo/etc/apt/sources.list

luego:

sudo aptitude update

y entonces

sudo apt-get install build-essential libssl-dev libffi-dev python-dev

y entonces

pip install cryptography

hth

Boop
fuente
Resolvió mi problema en el servidor ubuntu 16.04. Gracias
Altaf Hussain
14

Probé muchas soluciones anteriores, pero solo después de la instalación de la siguiente lib pude instalar cryptography:

sudo apt install libssl1.0

Estoy usando Ubuntu 18.04, pero también funcionará en Ubuntu 18.10.

Daniil Mashkin
fuente
1
Si bien este código puede responder la pregunta, proporcionar un contexto adicional con respecto a cómo y / o por qué resuelve el problema mejoraría el valor a largo plazo de la respuesta.
Nic3500
1
Esto funcionó para mí. ¿Por qué funcionó? ¿Cuál es la diferencia entre ese paquete, que instala libssl1.0-dev y libssl-dev?
Chris
2
No entiendo por qué, pero sólo esto me ayudó demasiado
dyus
A mí también me funcionó. Aunque pip todavía recibe un error de segmentación después de anunciar la instalación exitosa, creo que es solo un problema de pip.
Rob Mosher
7

La respuesta de Nick Woodham no funcionó en OSX 10.11 El Capitan para mí, pero esto sí.

brew install openssl
CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptography==0.8
ouroboros
fuente
Esto estuvo más cerca de trabajar para mí, pero también falló ... El Capitan OSX 10.11.3 aquí. falló con el código de error 1 en / private / var / folder / d9 / 75cfznt17cjc124j3stq3qc40000gn / T / pip-build-Q_JjdE / cryptography /
agondiken
Tuve que usar CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographyy se instaló. Tuve que agregar LDFLAGS="-L/usr/local/opt/openssl/lib"también para que la biblioteca se cargara. El comentario de Dean Christian Armada parece hacer lo mismo, pero usa variables generadas en lugar de codificación rígida.
spig
4

Si está utilizando python3, debe instalarlo python3-dev. Esto solucionó mi problema sudo apt-get install python3-dev.

Pobe
fuente
4

Estaba teniendo problemas con la instalación cryptography==1.7.1en Ubuntu 16.04 y ninguna de las respuestas anteriores me ayudó. Entonces, actualicé el requisito a un 1.8.2 compatible y la configuración fue exitosa. Tenga en cuenta que aún necesitaría elementos esenciales de compilación y otras dependencias mencionadas en la respuesta superior (más votada) .

shad0w_wa1k3r
fuente
3

Estaba teniendo un problema al ejecutarlo sudo pip install cryptographyporque no encontraba ffi cuando intentaba compilar. (OSX - Yosemite)

Lo resolví descargando libffi y configurando la var.

$ brew install pkg-config libffi
$ export PKG_CONFIG_PATH=/usr/local/Cellar/libffi/3.0.13/lib/pkgconfig/
$ pip install cryptography
ThinkBonobo
fuente
Estaba teniendo problemas para instalar bcrypt debido a que cffi no se pudo instalar, pero esto lo solucionó tanto para cffi como para bcrypt. ¡Gracias!
radiantradon
Esto no funcionó para mí en El Capitán. También tenga en cuenta el período perdido al final de "criptografía de instalación de pip".
Shacker
@shacker No tengo el capitan, así que no puedo probar eso, pero eliminé el período perdido gracias.
ThinkBonobo
@shacker Comprueba mi respuesta hermano para la instalación de El Capitan
Dean Christian Armada
3

Esto funciona en El Capitan con MacPorts:

$ sudo port install openssl
$ env LDFLAGS="-L/opt/local/lib" CFLAGS="-I/opt/local/include" pip install cryptography
Torsten Homberger
fuente
3

Si está compilando una distribución de paquete de Python en un archivo .gitlab-ci.yml para GitLab CI que utiliza un corredor gitlab implementado en una máquina AWS EC2

 - apk add --update alpine-sdk && \
 - apk add libffi-dev openssl-dev && \
 - apk --no-cache --update add build-base
crakama
fuente
1
¡Salud, funcionó muy bien en un contenedor acoplable con base alpina!
Alex Szabó
2

Noté que el póster original claramente estaba usando una instalación de Windows ... y las mejores respuestas anteriores son para otros sistemas operativos ... así que aquí va. Esto supone que ha instalado Python 2.7, que es la versión más compatible (aunque antigua).

  1. Instale el " compilador de Visual C ++ para Python "
  2. Abra una ventana de símbolo del sistema administrativo
  3. Vuelva a ejecutar la instalación de pip (paquete), por ejemplo

    cd C:\Python27\Scripts
    pip install cryptography  (or pycrypto, fabric, etc)
Steven el fácilmente divertido
fuente
2

Me encontré con un problema similar recientemente. En mi caso, las versiones cffiy cryptographyescritas en require.txt no eran compatibles (cffi == 1.8.9 y criptografía == 1.9). Resolví la actualización cfficon la última versión disponible.

Griffosx
fuente
1

De hecho, me encontré con este mismo problema al intentar instalar Scrapy, que depende de la criptografía que se instale primero. Estoy en Win764-bit con Python 2.7 de 64 bits instalado. La respuesta de @ jsonm finalmente funcionó para mí, pero primero tuve que copiar C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvarsx86_amd64.batal x86_amd64subdirectorio dentro de ese directorio bin para vcvarsall.batque dejara de arrojar un error diciendo que faltaba la configuración. Si necesita configurar env vars para una configuración diferente, asegúrese de copiar el archivo bat vcvars correspondiente al subdirectorio correspondiente o el primer comando a continuación podría no funcionar.

Luego ejecuté lo siguiente desde una línea de comandos según las instrucciones de @ jsonm (ajustado para mi configuración) ...

C:\> "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_amd64 
C:\> set LIB=C:\OpenSSL-Win64\lib;%LIB% 
C:\> set INCLUDE=C:\OpenSSL-Win64\include;%INCLUDE% 
C:\> pip install cryptography

Y funcionó.

minorgod
fuente
1

descargué el código fuente completo de Paramiko de Pypi e hice

instalación de python setup.py

funcionó a la perfección

Todos los paquetes predeterminados pythondev / openssl / libffi ya están presentes en rhel.

descargar rpms tiene un desajuste de rpm y más problemas

AGARRE DE RICHA
fuente
0

Estoy teniendo el mismo problema:

pip install cryptography

.
.
.
Installing collected packages: cffi, cryptography
     Running setup.py install for cffi ... error

Luego instalo libffi-devel y el problema está resuelto

yum install libffi-devel
Pradip Das
fuente
0

Esos dos comandos me lo arreglaron:

brew install openssl
brew link openssl --force

Fuente: https://github.com/phusion/passenger/issues/1630#issuecomment-147527656

Tobias Lorenz
fuente
1
Recomiendo encarecidamente no hacerlo brew link openssl --forceen OS X. En su lugar, solo actualice su pip a la última versión e instalará una rueda estáticamente vinculada para cffi y criptografía sin ningún problema.
Paul Kehrer
0

Resolví esto actualizando de criptografía 1.9 a 2.4.2

Alexander Townsend
fuente