Falha ao instalar o pacote de criptografia Python com PIP e setup.py


256

Quando tento instalar o pacote de criptografia para Python por meio de pip install cryptographyou baixando o pacote do site e executando python setup.py, recebo o seguinte erro:


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

Encontrei outras postagens de erro egg_info ( aqui e aqui ), mas as soluções fornecidas não resolveriam meu problema. Além disso, eu consigo instalar outros pacotes através do PIP.

PIP versão 1.5.4 setuptools versão 2.2


PONTEIRO PARA TODOS - a criptografia agora envia rodas de pré-construção para a maioria dos sistemas operacionais, portanto, uma pip installcriptografia deve funcionar imediatamente .
Legorooj 01/02

Respostas:


427

Eu tive um problema semelhante e descobri que estava simplesmente perdendo uma dependência (libssl-dev, para mim). Conforme mencionado em https://cryptography.io/en/latest/installation/ , verifique se todas as dependências foram atendidas:

No Windows

Se você estiver no Windows, precisará ter o OpenSSL instalado. Existem binários pré-compilados disponíveis. Se sua instalação estiver em um local incomum, configure as variáveis ​​de ambiente LIB e INCLUDE para incluir os locais correspondentes. Por exemplo:

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

Criando criptografia no Linux

A criptografia deve ser criada com muita facilidade no Linux, desde que você tenha um compilador C, cabeçalhos para Python (se você não estiver usando pypy) e cabeçalhos para as bibliotecas OpenSSL e libffi disponíveis em seu sistema.

Para Debian e Ubuntu , o seguinte comando garantirá que as dependências necessárias sejam instaladas:

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

Para derivados do Fedora e RHEL , o seguinte comando garantirá que as dependências necessárias sejam instaladas:

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

Agora você deve conseguir criar e instalar criptografia com o habitual.

pip install cryptography

1
Obrigado, funcionou perfeitamente! Tendo VS2010 eu tinha que: SET VS90COMNTOOLS =% VS100COMNTOOLS% e adicione o sufixo "mt" para nomes lib
Maciek

//, posso confirmar que isso funcionou em uma máquina CEntOS 6.3 com Python 3.3 com um erro semelhante ao postado na pergunta original.
Nathan Basanese

4
Parece que esse libffi-devpacote é a chave. Não precisei configurar mais nada, mas esse nome de pacote não apareceu no log de erros: - / Obrigado.
M3nda

6
Não se esqueça de substituir python-devpor python3-devse você estiver usando python3
duan 28/02

1
FWIW Estou executando Debian 9 e tive que fazer um apt-get instalar libssl1.0-dev antes de eu sair recebendo erros durante pip instalar criptografia
Mike Pennington

113

Esta é uma versão resumida das informações encontradas na instalação da criptografia página de documentos de . Consulte essa página para obter os detalhes mais recentes.

Como essa pergunta do SO continua aparecendo, deixarei uma resposta aqui também (sou um dos desenvolvedores de pyca / criptografia). Aqui está o que você precisa para instalar pyca / criptografia de maneira confiável nas três principais plataformas.

Observe que em todos esses casos, é altamente recomendável que você instale em um virtualenv e não no espaço global do pacote. Isso não é específico da criptografia, mas é um conselho genérico para manter sua instalação do Python confiável. O espaço global de pacotes no sistema operacional, desde que o Pythons seja de propriedade do sistema, e a instalação de coisas via pip nele está causando problemas.

janelas

Atualize para o pip mais recente (8.1.2 em junho de 2016) e apenas pip install cryptography

criptografia e cffi são enviados como rodas vinculadas estaticamente.

OS X

Atualize para o pip mais recente (8.1.2 em junho de 2016) e apenas pip install cryptography

criptografia e cffi são enviados como rodas vinculadas estaticamente. Isso funcionará para pyenv Python, sistema Python, homebrew Python, etc. Enquanto você estiver no último pip, nem precisará de um compilador.

Linux

A partir da criptografia da versão 2.0, é fornecida muitas rodas linux1. Isso significa que os usuários com o pip 8.1+ rodando em uma distribuição baseada em glibc (quase tudo, exceto Alpine Linux) e no x86 / x86-64 (desculpe pessoal do Raspberry Pi) não precisam mais de um compilador ou cabeçalhos, porque você receberá uma roda pré-compilada automaticamente . Então, a primeira coisa que você deve tentar é atualizar seu pip!

Se você não é compatível com o manylinux1, aqui está o que você precisa fazer:

Você precisará de um compilador C, libffi + seus cabeçalhos de desenvolvimento e openssl + seus cabeçalhos de desenvolvimento.

Distribuições derivadas do Debian ou Ubuntu

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

pip install cryptography

Distribuições derivadas da Red Hat

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

pip install cryptography


1
Eu fiz isso, mas ainda recebo o erro: "Falha na criação de roda para criptografia". Seguida por muita saída (demais para um comentário).
RolandiXor

4
A resposta do MacOSX funcionou como um encanto no MacOS Sierra 10.12. Atualizei meu pip para a versão mais recente no momento, 9.0.1.
João Santos

3
Atualize para o pip mais recente (8.1.2 em junho de 2016) e apenas a criptografia de instalação do pip funciona!
Timothy Dalton

Eu tive que atualizar manualmente o meu pipque tem idades, então a solução OSX funciona como um encanto. ( pip 9.0.1, MacOS Sierra)
benjaminz

1
não funciona no meu Windows 10, recebendo erro de compilação não aberto pode incluir o arquivo: 'openssl / opensslv.h'
Totte Karlsson

43

Para aqueles que executam o OS X, eis o que funcionou para mim:

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

(Executando 10.9 Mavericks)

Você também pode tentar mesclar os comandos flags e pip com o seguinte, conforme o comentário abaixo:

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 trabalhou para mim no Mavericks.
Jjr4826

Este comando na resposta não está correto: a segunda e a terceira linha devem ser mescladas (use uma barra invertida). Então funciona perfeitamente, apenas testado no El Capitan. Este comentário acima também não está correto. As outras configurações da resposta são necessárias ou você receberá reclamações posteriores.
Christian Tismer

1
Como sempre @nathancahill HEHE
Nick Woodhams

1
Eu tive que usar exportnão env, mas de outra forma funciona.
Richard

$ ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographytrabalhou para mim macOS 10.12com Python3.7(em um virtualenv) quando necessário cryptographypara instalar ansible.
precisa saber é

23

Isso funcionou para mim em El Capitan

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

Você também pode verificar o tópico aqui: https://github.com/pyca/cryptography/issues/2350


Este é o primeiro desta página (e muitos, muitos outros ..) que funcionou para mim no Mojave 10.14.5, obrigado. Além disso, as variáveis ​​de ambiente estão ativas apenas para o comando, e não para a sessão, como em outros lugares.
21419 Chris

23

Isso resolveu o problema para mim (Ubuntu 16.04):

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

e então estava trabalhando assim:

pip install cryptography
pip install pyopenssl ndg-httpsclient pyasn1

14

Aparentemente, nas versões recentes do OSX, isso pode ser causado pelo envio da própria versão do OpenSSL pela Apple, que não funciona com a biblioteca de criptografia.

As versões recentes da biblioteca de criptografia são fornecidas com suas próprias dependências nativas, mas para obtê-las você precisará atualizar o pip e, possivelmente, também o ambiente virtual. Então, para mim, a solução foi:

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

a reinstalação virtualenv fez isso por mim, estava usando uma versão antiga do pip que continuava falhando, obrigado!
Adri Van Houdt 22/03

Ainda falha para mim. OSX 10.11.3 El Capitan aqui.
agondiken

14

Como eu resolvi "Falha na limpeza do diretório de construção para criptografia"
(vim aqui do google para resultar nesse erro).

Nota : usando um virtualenv

TL; DR:

meu arquivo /etc/apt/sources.listnão foi configurado corretamente para o meu debian 8.

Explicações:

Eu queria instalar o paramiko. paramiko precisa de criptografia.

Eu recebi estes erros: primeiro com 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 depois com 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.

(Não são exatamente os mesmos erros do OP, mas estou aqui para ajudar eventualmente )

Resolução:

Depois de testar quase todos os comandos de todas as postagens, acabo acessando
https://wiki.debian.org/SourcesList
e copio colado minha configuração adequada no arquivo/etc/apt/sources.list

então:

sudo aptitude update

e depois

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

e depois

pip install cryptography

hth


Resolvido meu problema no servidor ubuntu 16.04. Graças
Altaf Hussain

14

Eu tentei muitas soluções acima, mas somente após a instalação da seguinte lib eu pude instalar cryptography:

sudo apt install libssl1.0

Estou usando o Ubuntu 18.04, mas ele também funcionará no Ubuntu 18.10.


1
Embora esse código possa responder à pergunta, fornecer um contexto adicional a respeito de como e / ou por que ele resolve o problema melhoraria o valor a longo prazo da resposta.
precisa saber é o seguinte

1
Isso funcionou para mim. Por que funcionou? Qual é a diferença entre esse pacote, que instala libssl1.0-dev e libssl-dev?
Chris

2
Eu não entendo por que, mas só isso me ajudou muito
dyus

Trabalhou para mim também. Embora o pip ainda receba uma falha de segmentação após anunciar a instalação bem-sucedida, acho que é apenas um problema do pip.
Rob Mosher


7

A resposta de Nick Woodham não funcionou no OSX 10.11 El Capitan para mim, mas funcionou.

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

Isso ficou mais próximo de funcionar para mim, mas também falhou. El Capitan OSX 10.11.3 aqui. falhou com o código de erro 1 em / private / var / folders / d9 / 75cfznt17cjc124j3stq3qc40000gn / T / pip-build-Q_JjdE / cryptography /
agondiken

Eu tive que usar CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographye instalado. Eu tive que adicionar LDFLAGS="-L/usr/local/opt/openssl/lib"também para carregar a biblioteca. O comentário de Dean Christian Armada parece fazer a mesma coisa, mas usando variáveis ​​geradas por fermentação em vez de codificação.
spig 25/05

4

Se você estiver usando python3, precisará instalar python3-dev. Isso corrigiu meu problema sudo apt-get install python3-dev.


4

Eu estava tendo problemas com a instalação cryptography==1.7.1no Ubuntu 16.04 e nenhuma das respostas acima ajudou. Portanto, atualizei o requisito para um 1.8.2 compatível e a instalação foi bem-sucedida. Observe que você ainda precisará criar itens essenciais e outras dependências mencionadas na resposta superior (mais votada) .


3

Eu estava com um problema em execução sudo pip install cryptographyporque não encontrava ffi ao tentar compilar. (OSX - Yosemite)

Eu o resolvi baixando o libffi e configurando o env var.

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

Eu estava tendo problemas com o pip instalando o bcrypt porque o cffi não foi instalado, mas isso corrigiu o cffi e o bcrypt. Obrigado!
Radiantradon

Isso não funcionou para mim no El Capitan. Observe também o período perdido no final de "criptografia de instalação de pip".
shacker

@ shacker Não tenho el capitan, então não posso testar isso, mas removi o período perdido graças.
precisa saber é o seguinte

@shacker Verifique minha resposta bro para a instalação El Capitan
Dean Christian Armada

3

Isso funciona no El Capitan com MacPorts:

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

3

Se você estiver criando uma distribuição de pacotes python em um arquivo .gitlab-ci.yml no GitLab CI que usa um corredor gitlab implantado em uma máquina AWS EC2

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

1
Saúde, funcionou muito bem em um contêiner alpino baseado!
Alex Szabó

2

Percebi que o pôster original estava claramente usando uma instalação do Windows ... e as melhores respostas acima são todas para outros sistemas operacionais ... então aqui vai. Isso pressupõe que você instalou o Python 2.7, que é a versão mais amplamente suportada (embora antiga).

  1. Instale o " Visual C ++ Compiler for Python "
  2. Abra uma janela de prompt de comando administrativo
  3. Execute novamente a instalação do pip (pacote), por exemplo

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

2

Encontrei um problema semelhante recentemente. No meu caso, as versões cffie cryptographyescritas em requirements.txt não eram compatíveis (cffi == 1.8.9 e criptografia == 1.9). Resolvi atualizar cfficom a última versão disponível.


1

Na verdade, eu encontrei esse mesmo problema ao tentar instalar o Scrapy, que depende da criptografia sendo instalada primeiro. Estou no Win764-bit com o Python 2.7 de 64 bits instalado. A resposta de @ jsonm finalmente funcionou para mim, mas primeiro tive que Copiar C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvarsx86_amd64.batpara o x86_amd64subdir dentro desse diretório bin, para vcvarsall.batque parasse de gerar um erro dizendo que estava faltando a configuração. Se você precisar configurar o env vars para uma configuração diferente, copie para o arquivo bat vcvars correspondente no subdiretório correspondente ou o primeiro comando abaixo pode não funcionar.

Em seguida, executei o seguinte em uma linha de comando, de acordo com as instruções do @ jsonm (aprimoradas para minha configuração) ...

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 funcionou.



1

eu baixei o código fonte completo do paramiko do pypi e fiz

instalação do python setup.py

funcionou perfeitamente

todos os pacotes pythondev / openssl / libffi padrão já estão presentes no rhel.

o download de rpms tem incompatibilidade de rpm e mais problemas


0

Eu estou tendo o mesmo problema:

pip install cryptography

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

Então eu instalo o libffi-devel e o problema está resolvido

yum install libffi-devel


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.