Échec de l'installation du package de cryptographie Python avec PIP et setup.py


256

Lorsque j'essaie d'installer le package de cryptographie pour Python via pip install cryptographyou en téléchargeant le package à partir de leur site et en cours d'exécution python setup.py, j'obtiens l'erreur suivante:


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

J'ai trouvé d'autres messages d'erreur egg_info ( ici et ici ) mais les solutions fournies ne résoudraient pas mon problème. De plus, je peux installer d'autres packages via PIP.

PIP version 1.5.4 setuptools version 2.2


POINTEUR POUR TOUS - la cryptographie est désormais livrée avec des roues de pré-construction pour la plupart des systèmes d'exploitation, donc une pip installcryptographie devrait fonctionner dès la sortie de la boîte.
Legorooj

Réponses:


427

J'ai eu un problème similaire et j'ai constaté qu'il me manquait simplement une dépendance (libssl-dev, pour moi). Comme référencé dans https://cryptography.io/en/latest/installation/ , assurez-vous que toutes les dépendances sont respectées:

Sous Windows

Si vous êtes sous Windows, vous devrez vous assurer que OpenSSL est installé. Des binaires précompilés sont disponibles. Si votre installation se trouve dans un emplacement inhabituel, définissez les variables d'environnement LIB et INCLUDE pour inclure les emplacements correspondants. Par exemple:

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

Construire la cryptographie sur Linux

la cryptographie devrait se construire très facilement sous Linux à condition d'avoir un compilateur C, des en-têtes pour Python (si vous n'utilisez pas pypy) et des en-têtes pour les bibliothèques OpenSSL et libffi disponibles sur votre système.

Pour Debian et Ubuntu , la commande suivante s'assurera que les dépendances requises sont installées:

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

Pour Fedora et les dérivés RHEL , la commande suivante s'assurera que les dépendances requises sont installées:

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

Vous devriez maintenant pouvoir construire et installer la cryptographie avec l'habituel.

pip install cryptography

1
Merci, a parfaitement fonctionné! Ayant VS2010, j'ai dû: SET VS90COMNTOOLS =% VS100COMNTOOLS% et ajouter le suffixe "mt" aux noms des
bibliothèques

//, je peux confirmer que cela a fonctionné sur une machine CEntOS 6.3 avec Python 3.3 avec une erreur similaire à celle publiée dans la question d'origine.
Nathan Basanese

4
Il semble que le libffi-devpackage soit la clé du tout. Je n'avais pas besoin de configurer quoi que ce soit de plus, mais ce nom de package n'apparaissait pas dans le journal des erreurs: - / Merci.
m3nda

6
N'oubliez pas de remplacer python-devpar python3-devsi vous utilisez python3
duan

1
FWIW J'utilise Debian 9 et j'ai dû faire une installation apt-get libssl1.0-dev avant de cesser de recevoir des erreurs lors de la cryptographie d'installation de pip
Mike Pennington

113

Il s'agit d'une version condensée des informations trouvées sur l' installation de la cryptographie page des documents d' . Consultez cette page pour les derniers détails.

Puisque cette question SO continue de se poser, je laisserai une réponse ici aussi (je suis l'un des développeurs pyca / cryptographie). Voici ce dont vous avez besoin pour installer de manière fiable pyca / cryptographie sur les 3 principales plates-formes.

Veuillez noter que dans tous ces cas, il est fortement recommandé de l' installer dans un virtualenv et non dans l'espace de package global. Ce n'est pas spécifique à la cryptographie mais plutôt un conseil générique pour garder votre installation Python fiable. L'espace de package global dans le système d'exploitation fourni Pythons appartient au système et l'installation de choses via pip dans lui pose problème.

les fenêtres

Mettre à niveau vers le dernier pip (8.1.2 en juin 2016) et juste pip install cryptography

la cryptographie et le cffi sont tous deux livrés sous forme de roues liées statiquement.

OS X

Mettre à niveau vers le dernier pip (8.1.2 en juin 2016) et juste pip install cryptography

la cryptographie et le cffi sont tous deux livrés sous forme de roues liées statiquement. Cela fonctionnera pour Python pyenv, Python système, Python homebrew, etc. Tant que vous êtes sur le dernier pip, vous n'aurez même pas besoin d'un compilateur.

Linux

À partir de la version 2.0, la cryptographie expédie les roues manylinux1. Cela signifie que les utilisateurs avec pip 8.1+ fonctionnant sur une distribution basée sur la glibc (presque tout sauf Alpine Linux) et sur x86 / x86-64 (désolé les personnes Raspberry Pi) n'ont plus besoin d'un compilateur ou d'en-têtes car vous obtiendrez automatiquement une roue précompilée . Donc, la première chose que vous devriez essayer est de mettre à jour votre pip!

Si vous n'êtes pas compatible avec manylinux1, voici ce que vous devez faire:

Vous aurez besoin d'un compilateur C, libffi + ses en-têtes de développement et openssl + ses en-têtes de développement.

Distributions dérivées de Debian ou Ubuntu

apt-get install build-essential libssl-dev libffi-dev python-dev suivi par

pip install cryptography

Distributions dérivées de Red Hat

yum install gcc openssl-devel libffi-devel python-devel suivi par

pip install cryptography


1
Je l'ai fait, mais j'obtiens toujours cette erreur: "Échec de la construction de la roue pour la cryptographie" Suivi par beaucoup de sorties (trop pour un commentaire).
RolandiXor

4
La réponse MacOSX a fonctionné comme un charme sur MacOS Sierra 10.12. J'ai mis à jour mon pip vers la version la plus récente à ce moment, 9.0.1.
João Santos

3
Mettez à niveau vers le dernier pip (8.1.2 à partir de juin 2016) et installez simplement pip fonctionne!
Timothy Dalton,

J'ai dû mettre à jour manuellement mon pipancien, puis la solution OSX fonctionne comme un charme. ( pip 9.0.1, MacOS Sierra)
benjaminz

1
ne fonctionne pas sur mon windows10, obtenir une erreur de build ne peut pas ouvrir le fichier include: 'openssl / opensslv.h'
Totte Karlsson

43

Pour ceux d'entre vous qui utilisent OS X, voici ce qui a fonctionné pour moi:

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

(Exécution de 10,9 Mavericks)

Vous pouvez également essayer de fusionner les commandes flags et pip avec ce qui suit selon le commentaire ci-dessous:

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

1
CFLAGS="-I/usr/include" pip install cryptography de reaperhulk a travaillé pour moi sur Mavericks.
jjr4826

Cette commande dans la réponse n'est pas correcte: la deuxième et la troisième ligne doivent être fusionnées (utilisez une barre oblique inverse). Ensuite, cela fonctionne parfaitement, juste testé sur El Capitan. Ce commentaire ci-dessus n'est également pas correct. Les autres paramètres de la réponse sont nécessaires, sinon vous obtiendrez des plaintes ultérieurement.
Christian Tismer

1
Comme toujours @nathancahill HEHE
Nick Woodhams

1
J'ai dû utiliser exportnon env, mais fonctionne autrement.
Richard

$ ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographytravaillé pour moi macOS 10.12avec Python3.7(dans une virtualenv) lorsqu'ils ont besoin cryptographypour installer ansible.
jalanb

23

Cela a fonctionné pour moi à El Capitan

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

Vous pouvez également consulter le fil ici: https://github.com/pyca/cryptography/issues/2350


C'est le premier sur cette page (et beaucoup, beaucoup d'autres ..) qui a fonctionné pour moi dans Mojave 10.14.5, merci. De même, les variables d'environnement ne sont actives que pour la commande plutôt que pour la session comme ailleurs.
Chris

23

Cela a résolu le problème pour moi (Ubuntu 16.04):

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

et puis ça fonctionnait comme ça:

pip install cryptography
pip install pyopenssl ndg-httpsclient pyasn1

14

Apparemment, sur les versions récentes d'OSX, cela peut être dû au fait qu'Apple a expédié sa propre version d'OpenSSL, qui ne fonctionne pas avec la bibliothèque de cryptographie.

Les versions récentes de la bibliothèque de cryptographie sont livrées avec leurs propres dépendances natives, mais pour les obtenir, vous devrez mettre à niveau pip, et éventuellement aussi env virtuel. Donc pour moi, la solution était:

pip install --upgrade --force-reinstall pip virtualenv

la réinstallation de virtualenv l'a fait pour moi, il utilisait une ancienne version de pip qui échouait toujours, merci!
Adri Van Houdt

Échoue toujours pour moi. OSX 10.11.3 El Capitan ici.
agondiken

14

Comment j'ai résolu «Échec du nettoyage du répertoire de compilation pour la cryptographie»
(je suis venu ici de Google pour résoudre cette erreur.)

remarque : utilisation d'un virtualenv

TL; DR:

mon fichier /etc/apt/sources.listn'a pas été correctement configuré pour mon debian 8.

Explications:

Je voulais installer paramiko. paramiko a besoin de cryptographie.

J'ai eu ces erreurs: d'abord avec 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/

puis avec 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.

(Pas exactement les mêmes erreurs que OP mais je suis là pour vous aider éventuellement )

Résolution:

Après avoir testé presque toutes les commandes de tous les messages, je finis par aller sur
https://wiki.debian.org/SourcesList
et je copie ma configuration adéquate dans le fichier/etc/apt/sources.list

puis:

sudo aptitude update

puis

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

puis

pip install cryptography

hth


Résolu mon problème sur le serveur Ubuntu 16.04. Merci
Altaf Hussain

14

J'ai essayé de nombreuses solutions ci-dessus, mais seulement après l'installation de la bibliothèque suivante, j'ai pu installer cryptography:

sudo apt install libssl1.0

J'utilise Ubuntu 18.04, mais cela fonctionnera également sur Ubuntu 18.10.


1
Bien que ce code puisse répondre à la question, fournir un contexte supplémentaire concernant la manière et / ou la raison pour laquelle il résout le problème améliorerait la valeur à long terme de la réponse.
Nic3500

1
Cela a fonctionné pour moi. Pourquoi cela a-t-il fonctionné? Quelle est la différence entre ce paquet, qui installe libssl1.0-dev et libssl-dev?
Chris

2
Je ne comprends pas pourquoi, mais cela m'a aussi aidé
Dyus

A aussi fonctionné pour moi. Bien que pip ait toujours un défaut de segmentation après avoir annoncé l'installation réussie, mais je pense que ce n'est qu'un problème de pip.
Rob Mosher


7

La réponse de Nick Woodham n'a pas fonctionné sur OSX 10.11 El Capitan pour moi, mais cela a fonctionné.

brew install openssl
CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptography==0.8

Cela a été le plus proche de travailler pour moi, mais a également échoué .. El Capitan OSX 10.11.3 ici. a échoué avec le code d'erreur 1 dans / private / var / folder / d9 / 75cfznt17cjc124j3stq3qc40000gn / T / pip-build-Q_JjdE / cryptography /
agondiken

J'ai dû utiliser CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographyet il a installé. J'ai également dû ajouter LDFLAGS="-L/usr/local/opt/openssl/lib"pour charger la bibliothèque. Le commentaire de Dean Christian Armada semble faire la même chose mais en utilisant des variables générées par le brassage au lieu d'un codage en dur.
broche

4

Si vous utilisez python3, vous devez installer python3-dev. Cela a résolu mon problème sudo apt-get install python3-dev.


4

J'avais des problèmes avec l'installation cryptography==1.7.1sur Ubuntu 16.04 et aucune des réponses ci-dessus n'a aidé. J'ai donc mis à niveau l'exigence vers une version compatible 1.8.2 et la configuration a réussi. Notez que vous auriez toujours besoin des éléments essentiels de la construction et des autres dépendances mentionnés dans la réponse la plus élevée (la plus appréciée) .


3

J'avais un problème en cours d'exécution sudo pip install cryptographycar il ne trouverait pas ffi lors de la compilation. (OSX - Yosemite)

Je l'ai résolu en téléchargeant libffi et en configurant la var env.

$ brew install pkg-config libffi
$ export PKG_CONFIG_PATH=/usr/local/Cellar/libffi/3.0.13/lib/pkgconfig/
$ pip install cryptography

J'avais des problèmes pour installer bcrypt parce que cffi n'a pas pu être installé, mais cela l'a corrigé pour cffi et bcrypt. Je vous remercie!
radiantradon

Cela n'a pas fonctionné pour moi sur El Capitan. Notez également la période parasite à la fin de la «cryptographie d'installation de pip».
shacker

@shacker Je n'ai pas el capitan, je ne peux donc pas tester cela, mais j'ai supprimé la période perdue merci.
ThinkBonobo

@shacker Vérifiez ma réponse bro pour l'installation d'El Capitan
Dean Christian Armada

3

Cela fonctionne sur El Capitan avec MacPorts:

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

3

Si vous créez une distribution de packages python dans un fichier .gitlab-ci.yml pour GitLab CI qui utilise un exécuteur gitlab déployé sur une machine AWS EC2

 - apk add --update alpine-sdk && \
 - apk add libffi-dev openssl-dev && \
 - apk --no-cache --update add build-base

1
Vive, a très bien fonctionné dans un conteneur docker alpin!
Alex Szabó

2

J'ai remarqué que l'affiche originale utilisait clairement une installation Windows ... et les meilleures réponses ci-dessus sont toutes pour d'autres systèmes d'exploitation ... alors voilà. Cela suppose que vous avez installé Python 2.7, qui est la version la plus largement prise en charge (bien qu'ancienne).

  1. Installez le " Visual C ++ Compiler for Python "
  2. Ouvrez une fenêtre d'invite de commandes d'administration
  3. Réexécutez l'installation de pip (package), par exemple

    cd C:\Python27\Scripts
    pip install cryptography  (or pycrypto, fabric, etc)

2

J'ai rencontré récemment un problème similaire. Dans mon cas, les versions cffiet cryptographyécrites dans requirements.txt n'étaient pas compatibles (cffi == 1.8.9 et cryptographie == 1.9). J'ai résolu la mise cffià jour avec la dernière version disponible.


1

En fait, je suis tombé sur ce même problème en essayant d'installer Scrapy qui dépend de la cryptographie installée en premier. Je suis sur Win764-bit avec Python 2.7 64-bit installé. La réponse de @ jsonm a finalement fonctionné pour moi, mais j'ai d'abord dû copier C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvarsx86_amd64.batdans le sous- x86_amd64répertoire dans ce répertoire bin afin que le programme vcvarsall.batcesse de générer une erreur indiquant qu'il manquait la configuration. Si vous devez configurer les vars env pour une configuration différente, assurez-vous de copier dans le fichier bat vcvars correspondant dans le sous-répertoire correspondant ou la première commande ci-dessous peut ne pas fonctionner.

Ensuite, j'ai exécuté ce qui suit à partir d'une ligne de commande selon les instructions de @ jsonm (modifié pour ma config) ...

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

Et ça a marché.



1

j'ai téléchargé le code source complet de paramiko à partir de pypi et l'ai fait

installation de python setup.py

cela a fonctionné parfaitement

tous les paquets pythondev / openssl / libffi par défaut sont déjà présents dans rhel.

le téléchargement de rpms présente une incompatibilité de rpm et plus de problèmes


0

J'ai le même problème:

pip install cryptography

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

Ensuite, j'installe libffi-devel et le problème est résolu

yum install libffi-devel


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.