Не удалось установить пакет Python Cryptography с PIP и setup.py

Когда я пытаюсь установить пакет https://cryptography.io/ для Python через pip install cryptography или загрузив пакет с их сайта и запустив python setup.pyЯ получаю следующую ошибку:


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

Я нашел другие сообщения об ошибках egg_info ( здесь и здесь), но предоставленные там решения не решили мою проблему. Также я могу устанавливать другие пакеты через PIP.

PIP версия 1.5.4 setuptools версия 2.2

33 ответа

У меня была похожая проблема, и я обнаружил, что мне просто не хватает зависимости (libssl-dev, для меня). Как указано в https://cryptography.io/en/latest/installation/, убедитесь, что выполнены все зависимости:

На винде

Если вы используете Windows, вам нужно убедиться, что у вас установлен OpenSSL. Доступны предварительно скомпилированные двоичные файлы. Если ваша установка находится в необычном месте, задайте в переменных среды LIB и INCLUDE соответствующие местоположения. Например:

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

Построение криптографии на Linux

Криптография должна очень легко собираться в Linux, если у вас есть компилятор C, заголовки для Python (если вы не используете pypy) и заголовки для библиотек OpenSSL и libffi, доступных в вашей системе.

Для Debian и Ubuntu следующая команда обеспечит установку необходимых зависимостей:

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

Для Fedora и RHEL-производных следующая команда обеспечит установку необходимых зависимостей:

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

Теперь вы должны быть в состоянии построить и установить криптографию с обычным.

pip install cryptography

Это сжатая версия информации, найденной на странице документации по криптографии.Обратитесь к этой странице для последних деталей.

Так как этот вопрос продолжает появляться, я также опущу ответ (я один из разработчиков pyca/cryptography). Вот что вам нужно для надежной установки pyca/cryptography на 3 основные платформы.

Обратите внимание, что во всех этих случаях настоятельно рекомендуется установить в virtualenv, а не в глобальное пространство пакетов. Это не относится только к криптографии, а является общим советом для обеспечения надежной установки Python. Глобальное пространство пакетов в ОС при условии, что Pythons принадлежит системе, и установка вещей через pip вызывает в ней проблемы.

Windows

Обновите до последней версии (8.1.2 по состоянию на июнь 2016 года) и просто pip install cryptography

криптография и cffi поставляются как статически связанные колеса.

OS X

Обновите до последней версии (8.1.2 по состоянию на июнь 2016 года) и просто pip install cryptography

криптография и cffi поставляются как статически связанные колеса. Это будет работать для pyenv Python, системного Python, доморощенного Python и т. Д. Пока вы используете последний пип, вам даже не понадобится компилятор.

Linux

Начиная с версии 2.0, криптография поставляется с колесами Manylinux1. Это означает, что пользователям с pip 8.1+, работающим в дистрибутиве на основе glibc (почти все, кроме Alpine Linux) и x86/x86-64 (извините, люди из Raspberry Pi) больше не нужен компилятор или заголовки, потому что вы получите предварительно скомпилированное колесо автоматически, Итак, первое, что вы должны попробовать, это обновить свой пункт!

Если вы не совместимы с manylinux1, то вот что вам нужно сделать:

Вам понадобится компилятор C, libffi + его заголовки разработки и openssl + его заголовки разработки.

Производные дистрибутивы Debian или Ubuntu

apt-get install build-essential libssl-dev libffi-dev python-dev с последующим

pip install cryptography

Производные от Red Hat

yum install gcc openssl-devel libffi-devel python-devel с последующим

pip install cryptography

Для тех из вас, кто использует OS X, вот что сработало для меня:

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

(Работает 10,9 Маверикс)

Вы также можете попробовать объединить флаги и команды pip со следующими комментариями:

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

Это сработало для меня в Эль-Капитане

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

Вы также можете проверить эту ветку здесь: https://github.com/pyca/cryptography/issues/2350

Это решило проблему для меня (Ubuntu 16.04):

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

и тогда это работало так:

pip install cryptography
pip install pyopenssl ndg-httpsclient pyasn1

По-видимому, в последних версиях OSX это может быть вызвано тем, что Apple выпустила собственную версию OpenSSL, которая не работает с библиотекой криптографии.

Последние версии библиотеки криптографии поставляются со своими собственными зависимостями, но для их получения вам потребуется обновить pip и, возможно, также виртуальную среду. Так что для меня решение было:

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

Я пробовал много решений выше, но только после установки следующей библиотеки я смог установить cryptography:

sudo apt install libssl1.0

Я использую Ubuntu 18.04

Как я решил "Не удалось очистить сборочный каталог для криптографии"
(Я пришел сюда из Google, чтобы привести к этой ошибке.)

примечание: использование virtualenv

TL; DR:

мой файл /etc/apt/sources.list не был правильно настроен для моего Debian 8.

Пояснения:

Я хотел установить парамико. Парамико нужна криптография.

Я получил эти ошибки: сначала с 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/

а затем с 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.

(Не совсем те же ошибки, что и у OP, но я здесь, чтобы помочь в конце концов)

Решение:

После тестирования почти каждой команды из каждого поста я продолжаю
https://wiki.debian.org/SourcesList
и скопируй вставил мой адекватный конфиг в файл /etc/apt/sources.list

затем:

sudo aptitude update

а потом

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

а потом

pip install cryptography

НТН

Это сработало для меня (я использую Ubuntu 14.04):

сначала установите libffi-dev libssl-dev libpython2.7-dev:

sudo apt-get install libffi-dev libssl-dev libpython2.7-dev

тогда внутри virtualenv:

pip install cryptography
pip install pyopenssl ndg-httpsclient pyasn1

Источники:

/questions/27188361/zaprosyi-ustanovki-pip-security-na-virtualenv-ne-mogut-sozdat-koleso-dlya-kriptografii-i-cffi/27188372#27188372

/questions/15977417/insecureplatformwarning-nastoyaschij-obekt-sslcontext-nedostupen-eto-meshaet-urllib3-pravilno-nastroit-ssl/15977428#15977428

Ответ Ника Вудхэма не работал для меня на OSX 10.11 El Capitan, но это сработало.

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

Если вы докеризуете свое приложение на Python, в вашем Dockerfile должно быть что-то вроде:

ОТ питона:3,7-альпийский

ЗАПУСК apk add --update alpine-sdk && apk add libffi-dev openssl-dev

RUN pip установить криптографию

Если вы строите распределение питон пакета в .gitlab-ci.yml файла для GitLab CI, который использует gitlab бегун развернутую в машине AWS EC2

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

Если вы используете python3, вам необходимо установить python3-dev, Это исправило мою проблему sudo apt-get install python3-dev,

У меня были проблемы с установкой cryptography==1.7.1 на Ubuntu 16.04 и ни один из ответов выше не помог. Итак, я обновил требование до совместимого 1.8.2, и установка прошла успешно. Обратите внимание, что вам все равно понадобятся основы сборки и другие зависимости, упомянутые в верхнем (наиболее одобренном) ответе.

Я заметил, что оригинальный постер явно использовал установку Windows... и лучшие ответы выше для всех ОС... так что здесь. Это предполагает, что вы установили Python 2.7, который является наиболее широко поддерживаемой (хотя и старой) версией.

  1. Установите " Компилятор Visual C++ для Python"
  2. Откройте окно командной строки администратора
  3. Перезапустите pip install (пакет), например

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

У меня была проблема с бегом sudo pip install cryptography потому что он не найдет ffi при попытке компиляции. (OSX - Йосемити)

Я решил это, загрузив libffi и настроив env var.

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

Это работает на El Capitan с MacPorts:

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

Обновление версии pip решило проблему

pip install --upgrade pip (для дистрибутивов mac/linux)

Я недавно столкнулся с подобной проблемой. В моем случае версии cffi а также cryptography написано в файле require.txt несовместимо (cffi==1.8.9 и криптография ==1.9). Я решил обновление cffi с последней доступной версией.

У меня тоже была эта ошибка. После того, как я продолжал получать эту ошибку даже после установки openSSL, я в конце концов попытался установить файлы из колеса с https://pypi.python.org/pypi/cryptography/0.2.2#downloads. Это сработало!

На самом деле я столкнулся с той же проблемой, пытаясь установить Scrapy, которая зависит от того, какая криптография была установлена ​​первой. Я нахожусь на Win764-bit с установленным Python 2.7 64-bit. Ответ @jsonm в итоге сработал для меня, но сначала мне пришлось скопировать C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvarsx86_amd64.bat к x86_amd64 Субдир в этом бен дир так vcvarsall.bat перестанет выдавать ошибку, говоря, что в ней отсутствует конфигурация. Если вам нужно настроить env vars для другой установки, обязательно скопируйте его в соответствующий файл vcvars bat в соответствующий subdir, иначе первая команда ниже может не сработать.

Затем я запустил следующее из командной строки в соответствии с инструкциями @jsonm (настроено для моей конфигурации)...

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

И это сработало.

Я загрузил полный исходный код paramiko из pypi и сделал

Python setup.py установить

это работало без нареканий

все пакеты по умолчанию pythondev / openssl /libffi уже присутствуют в rhel.

загрузка rpms имеет несоответствие rpm и больше проблем

Use instead

None of the proposed solutions worked for me on Raspbian 10 (buster) so I just installed it via and voila:

      conda install -c anaconda cryptography

P.S. : I know that the question mentions pip but I see that OP is using a installation so I thought of sharing this solution anyway. Nevertheless, since this problem is apparently OS-specific, it's meaningful to remind one that conda is a cross-platform and language-agnostic solution which may also install necessary binaries apart from python packages - with just an one-liner.

вы должны обновить свой пип перед запуском установки

В Debian 11 (и, вероятно, в большинстве новых дистрибутивов Linux):

      sudo apt install python3-cryptography

У меня та же проблема:

pip install cryptography

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

Затем я устанавливаю libffi-devel и проблема решается

yum install libffi-devel

Я решил эту проблему путем обновления с криптографии 1.9 до 2.4.2

обновите версию pip с помощью команды:

  • easy_install -U пункт
  • python-m pip install --upgrade pip

просто выберите один для обновления.

Эти две команды исправили это для меня:

brew install openssl
brew link openssl --force

Источник: https://github.com/phusion/passenger/issues/1630

Была такая же проблема в Cygwin, вот что мне помогло

sudo apt-get install python-pip python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev libjpeg8-dev zlib1g-dev

но вместо sudo apt-get install я установил эти пакеты через CygwinSource этого кода

Другие вопросы по тегам