Impossibile installare il pacchetto di crittografia Python con PIP e setup.py


256

Quando provo ad installare il pacchetto di crittografia per Python tramite uno pip install cryptographyo scaricando il pacchetto dal loro sito ed eseguendo python setup.py, ottengo il seguente errore:


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

Ho trovato altri post di errore egg_info ( qui e qui ) ma le soluzioni fornite non avrebbero risolto il mio problema. Inoltre, sono in grado di installare altri pacchetti tramite PIP.

PIP versione 1.5.4 setuptools versione 2.2


PUNTATORE PER TUTTI - la crittografia ora spedisce ruote prefabbricate per la maggior parte dei sistemi operativi, quindi una pip installcrittografia` dovrebbe funzionare immediatamente .
Legorooj,

Risposte:


427

Ho avuto un problema simile e ho scoperto che mancava semplicemente una dipendenza (libssl-dev, per me). Come indicato in https://cryptography.io/en/latest/installation/ , assicurarsi che tutte le dipendenze siano soddisfatte:

Su Windows

Se sei su Windows dovrai assicurarti di avere OpenSSL installato. Sono disponibili file binari precompilati. Se l'installazione si trova in una posizione insolita, impostare le variabili di ambiente LIB e INCLUDE per includere le posizioni corrispondenti. Per esempio:

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

Costruire crittografia su Linux

la crittografia dovrebbe essere costruita molto facilmente su Linux a condizione che tu abbia un compilatore C, intestazioni per Python (se non stai usando pypy) e intestazioni per le librerie OpenSSL e libffi disponibili sul tuo sistema.

Per Debian e Ubuntu , il comando seguente assicurerà che siano installate le dipendenze richieste:

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

Per i derivati ​​Fedora e RHEL , il comando seguente garantirà l'installazione delle dipendenze richieste:

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

Ora dovresti essere in grado di costruire e installare la crittografia con il solito.

pip install cryptography

1
Grazie, ha funzionato perfettamente! Avendo VS2010 ho dovuto: SET VS90COMNTOOLS =% VS100COMNTOOLS% e aggiungere il suffisso "mt" ai nomi lib
Maciek,

//, posso confermare che questo ha funzionato su una macchina CEntOS 6.3 con Python 3.3 con un errore simile a quello pubblicato nella domanda originale.
Nathan Basanese,

4
Sembra che il libffi-devpacchetto sia la chiave. Non avevo bisogno di configurare altro, ma quel nome del pacchetto non compariva nel registro degli errori: - / Grazie.
m3nda,

6
Non dimenticare di sostituirlo python-devcon python3-devse stai usando python3
duan il

1
FWIW Sto eseguendo Debian 9 e ho dovuto fare un'installazione apt-get libssl1.0-dev prima di smettere di ricevere errori durante la crittografia dell'installazione pip
Mike Pennington,

113

Questa è una versione ridotta delle informazioni trovate nella pagina dei documenti di installazione della crittografia . Consulta quella pagina per gli ultimi dettagli.

Poiché questa domanda SO continua a venire, lascerò cadere una risposta anche qui (sono uno degli sviluppatori di pyca / crittografia). Ecco di cosa hai bisogno per installare pyca / crittografia in modo affidabile sulle 3 principali piattaforme.

Si noti che in tutti questi casi si consiglia vivamente di installare in virtualenv e non nello spazio globale del pacchetto. Questo non è specifico per la crittografia ma è piuttosto un consiglio generico per mantenere affidabile l'installazione di Python. Lo spazio globale dei pacchetti nel sistema operativo fornito da Pythons è di proprietà del sistema e l'installazione di oggetti tramite pip richiede problemi.

finestre

Esegui l'upgrade all'ultima pip (8.1.2 a giugno 2016) e basta pip install cryptography

crittografia e cffi sono entrambi spediti come ruote collegate staticamente.

OS X

Esegui l'upgrade all'ultima pip (8.1.2 a giugno 2016) e basta pip install cryptography

crittografia e cffi sono entrambi spediti come ruote collegate staticamente. Funzionerà con Pyenv Python, Python di sistema, Python homebrew, ecc. Fintanto che stai utilizzando l'ultimo pip non avrai nemmeno bisogno di un compilatore.

Linux

A partire dalla versione 2.0 la crittografia distribuisce ruote manylinux1. Ciò significa che gli utenti con pip 8.1+ in esecuzione su una distribuzione basata su glibc (quasi tutto tranne Alpine Linux) e su x86 / x86-64 (mi dispiace gente Raspberry Pi) non hanno più bisogno di un compilatore o intestazioni perché otterrai automaticamente una ruota precompilata . Quindi, la prima cosa che dovresti provare è aggiornare il tuo pip!

Se non sei compatibile con manylinux1, ecco cosa devi fare:

Avrai bisogno di un compilatore C, libffi + le sue intestazioni di sviluppo e openssl + le sue intestazioni di sviluppo.

Distribuzioni derivate da Debian o Ubuntu

apt-get install build-essential libssl-dev libffi-dev python-dev seguito da

pip install cryptography

Distribuzioni derivate da Red Hat

yum install gcc openssl-devel libffi-devel python-devel seguito da

pip install cryptography


1
Ho fatto questo, ma ho ancora questo errore: "Impossibile creare la ruota per la crittografia" Seguito da un sacco di output (troppo per un commento).
RolandiXor

4
La risposta di MacOSX ha funzionato come un fascino su MacOS Sierra 10.12. Ho aggiornato il mio pip alla versione più recente in questo momento, 9.0.1.
João Santos,

3
Esegui l'upgrade all'ultima pip (8.1.2 a giugno 2016) e basta installare la crittografia pip install!
Timothy Dalton,

Ho dovuto aggiornare manualmente il mio pipvecchio, quindi la soluzione OSX funziona come un fascino. ( pip 9.0.1, MacOS Sierra)
benjaminz,

1
non funziona sul mio Windows 10, ottenere l'errore di compilazione non può aprire il file include: 'openssl / opensslv.h'
Totte Karlsson

43

Per quelli di voi che eseguono OS X, ecco cosa ha funzionato per me:

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

(Esecuzione di 10.9 Mavericks)

Puoi anche provare a unire i comandi flags e pip ai seguenti per il commento qui sotto:

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 da reaperhulk ha lavorato per me su Mavericks.
jjr4826

Questo comando nella risposta non è corretto: la seconda e la terza riga devono essere unite (utilizzare una barra rovesciata). Quindi funziona perfettamente, appena testato su El Capitan. Anche questo commento sopra non è corretto. Le altre impostazioni nella risposta sono necessarie o riceverai reclami in seguito.
Christian Tismer

1
Come sempre @nathancahill HEHE
Nick Woodhams,

1
Ho dovuto usare exportnon env, ma funziona al contrario.
Richard,

$ ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographylavorato per me macOS 10.12con Python3.7(in un virtualenv) quando necessario cryptographyper l'installazione ansible.
jalanb,

23

Questo ha funzionato per me a El Capitan

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

Puoi anche controllare la discussione qui: https://github.com/pyca/cryptography/issues/2350


Questo è il primo in questa pagina (e molti, molti altri ...) che ha funzionato per me in Mojave 10.14.5, grazie. Inoltre, le variabili di ambiente sono attive solo per il comando anziché per la sessione come altrove.
Chris,

23

Questo ha risolto il problema per me (Ubuntu 16.04):

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

e poi funzionava così:

pip install cryptography
pip install pyopenssl ndg-httpsclient pyasn1

14

Apparentemente su versioni recenti di OSX ciò potrebbe essere causato dalla spedizione da parte di Apple della propria versione di OpenSSL, che non funziona con la libreria di crittografia.

Le versioni recenti della libreria di crittografia vengono fornite con le proprie dipendenze native, ma per ottenerle è necessario aggiornare pip e possibilmente anche un ambiente virtuale. Quindi per me la soluzione era:

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

la reinstallazione di virtualenv l'ha fatto per me, stava usando una vecchia versione di pip che continuava a fallire, grazie!
Adri Van Houdt,

Fallisce ancora per me. OSX 10.11.3 El Capitan qui.
agondiken,

14

Come ho risolto "Impossibile eseguire la pulizia della directory di compilazione per la crittografia"
(Sono venuto qui da Google per ottenere questo errore.)

Nota : utilizzando un virtualenv

TL; DR:

il mio file /etc/apt/sources.list non era configurato correttamente per il mio debian 8.

spiegazioni:

Volevo installare paramiko. paramiko ha bisogno della crittografia.

Ho avuto questi errori: prima 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/

e poi 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.

(Non esattamente gli stessi errori di OP ma alla fine sono qui per aiutarti )

solving:

Dopo aver testato quasi tutti i comandi di tutti i post finisco su
https://wiki.debian.org/SourcesList
e copia incollato la mia configurazione adeguata nel file/etc/apt/sources.list

poi:

sudo aptitude update

e poi

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

e poi

pip install cryptography

hth


Risolto il mio problema sul server Ubuntu 16.04. Grazie
Altaf Hussain il

14

Ho provato molte soluzioni sopra, ma solo dopo l'installazione della seguente libreria ho potuto installare cryptography:

sudo apt install libssl1.0

Sto usando Ubuntu 18.04, ma funzionerà anche su Ubuntu 18.10.


1
Sebbene questo codice possa rispondere alla domanda, fornire un contesto aggiuntivo riguardo a come e / o perché risolve il problema migliorerebbe il valore a lungo termine della risposta.
Nic3500,

1
Questo ha funzionato per me. Perché ha funzionato? Qual è la differenza tra quel pacchetto, che installa libssl1.0-dev e libssl-dev?
Chris,

2
Non capisco perché, ma solo questo mi ha aiutato
dyus

Ha funzionato anche per me. Sebbene pip abbia ancora un errore di segmentazione dopo aver annunciato l'installazione corretta, ma penso che sia solo un problema di pip.
Rob Mosher,


7

La risposta di Nick Woodham non ha funzionato su OSX 10.11 El Capitan per me, ma ha funzionato.

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

Questo mi ha avvicinato di più al mio lavoro ma ha anche fallito. El Capitan OSX 10.11.3 qui. non riuscito con codice di errore 1 in / private / var / cartelle / d9 / 75cfznt17cjc124j3stq3qc40000gn / T / pip-build-Q_JjdE / crittografia /
agondiken

Ho dovuto usare CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographye installato. Ho dovuto aggiungere LDFLAGS="-L/usr/local/opt/openssl/lib"anche per caricare la libreria. Il commento di Dean Christian Armada sembra fare la stessa cosa, ma usando variabili generate dalla birra invece di un hard coding.
spig

4

Se stai usando python3, devi installarlo python3-dev. Questo ha risolto il mio problema sudo apt-get install python3-dev.


4

Ho avuto problemi con l'installazione cryptography==1.7.1su Ubuntu 16.04 e nessuna delle risposte sopra ha aiutato. Quindi, ho aggiornato il requisito a un 1.8.2 compatibile e l'installazione ha avuto esito positivo. Nota che avresti comunque bisogno di costruire elementi essenziali e altre dipendenze menzionati nella risposta superiore (più votata) .


3

Ho avuto un problema con la corsa sudo pip install cryptography riscontrando perché non avrei trovato ffi quando provavo a compilare. (OSX - Yosemite)

L'ho risolto scaricando libffi e configurando env var.

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

Ho avuto problemi con l'installazione di pip in bcrypt perché cffi non è stato installato, ma questo è stato risolto sia per cffi che per bcrypt. Grazie!
Radiantradon,

Questo non ha funzionato per me su El Capitan. Si noti inoltre il periodo di smarrimento alla fine della "crittografia di installazione di pip".
shacker

@shacker Non hai el capitan, quindi non puoi provarlo ma hai rimosso il periodo randagio grazie.
ThinkBonobo,

@shacker Controlla la mia risposta bro per l'installazione di El Capitan
Decano Christian Armada,

3

Funziona su El Capitan con MacPorts:

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

3

Se si sta creando una distribuzione di pacchetti python in un file .gitlab-ci.yml per GitLab CI che utilizza un corridore gitlab distribuito in una macchina AWS EC2

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

1
Saluti, ha funzionato alla grande in un container docker con base alpina!
Alex Szabó,

2

Ho notato che il poster originale stava chiaramente usando un'installazione di Windows ... e le migliori risposte sopra sono tutte per altri sistemi operativi ... quindi ecco qui. Ciò presuppone che tu abbia installato Python 2.7, che è la versione più ampiamente supportata (anche se vecchia).

  1. Installa il " compilatore Visual C ++ per Python "
  2. Aprire una finestra del prompt dei comandi di amministrazione
  3. Rieseguire l'installazione del pip (pacchetto) ad es

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

2

Ho riscontrato un problema simile di recente. Nel mio caso le versioni di cffie cryptographyscritte in Requisito.txt non erano compatibili (cffi == 1.8.9 e crittografia == 1.9). Ho risolto l'aggiornamento cfficon l'ultima versione disponibile.


1

In realtà mi sono imbattuto in questa stessa prob cercando di installare Scrapy che dipende dalla crittografia installata per prima. Sono su Win764-bit con Python 2.7 64-bit installato. La risposta di @ jsonm alla fine ha funzionato per me, ma prima ho dovuto copiare C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvarsx86_amd64.batsul x86_amd64sottodir all'interno di quella directory bin in modo vcvarsall.batda smettere di lanciare un errore dicendo che mancava la configurazione. Se è necessario configurare env vars per una diversa installazione, assicurarsi di copiarlo nel corrispondente file bat vcvars nel corrispondente sottodir o il primo comando di seguito potrebbe non funzionare.

Quindi ho eseguito quanto segue da una riga di comando secondo le istruzioni di @ jsonm (ottimizzato per la mia configurazione) ...

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

E ha funzionato.



1

ho scaricato il codice sorgente completo di paramiko da pypi e l'ho fatto

installazione di python setup.py

ha funzionato perfettamente

tutti i pacchetti pythondev / openssl / libffi predefiniti sono già presenti in rhel.

il download di rpms presenta una mancata corrispondenza dei rpm e ulteriori problemi


0

Sto riscontrando lo stesso problema:

pip install cryptography

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

Quindi installo libffi-devel e il problema è risolto

yum install libffi-devel


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.