Не вдалося встановити пакет криптографії Python з PIP та setup.py


256

Коли я намагаюся встановити пакет Cryptography для 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


Вказівка ​​для кожного - криптографія тепер постачає колеса для більшості ОС, тому pip installкриптовалюта повинна працювати поза коробкою.
Legorooj

Відповіді:


427

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

У Windows

Якщо ви працюєте в 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

1
Дякую, працювали чудово! Маючи VS2010, я повинен був: Встановити VS90COMNTOOLS =% VS100COMNTOOLS% та додати суфікс "mt" до імен lib
Maciek

// Я можу підтвердити, що це працювало на машині CEntOS 6.3 з Python 3.3 з аналогічною помилкою, що розміщена в оригінальному запитанні.
Натан Басанес

4
Здається, що цей libffi-devпакет є ключовим. Мені більше нічого не потрібно було налаштовувати, але назва пакету не відображалась у журналі помилок: - / Дякую.
м3нда

6
Не забудьте замінити python-devз , python3-devякщо ви використовуєте python3
Дуань

1
FWIW Я запускаю Debian 9 і мені довелося зробити apt-get install libssl1.0-dev, перш ніж я кинув отримувати помилки під час криптографії встановлення pip
Майк Пеннінгтон,

113

Це стисла версія інформації, знайденої на сторінці документації про встановлення криптографії . Зверніться на цю сторінку, щоб отримати останні відомості.

Оскільки це запитання так не виникає, я відповім і тут (я один із розробників піка / криптографії). Ось що потрібно для надійної установки pyca / cryptography на 3 основних платформах.

Зверніть увагу, що у всіх цих випадках настійно рекомендується встановлювати в virtualenv, а не в глобальний простір пакетів. Це не характерно для криптографії, але це загальна порада для забезпечення надійності установки Python. Глобальний пакетний простір в ОС за умови, що Pythons належить системі, і встановлення речей через pip в неї вимагає проблем.

Windows

Оновіть до останнього пункту (8.1.2 станом на червень 2016 року) та просто pip install cryptography

Криптовалюта та cffi поставляються як статично пов'язані колеса.

ОС X

Оновіть до останнього пункту (8.1.2 станом на червень 2016 року) та просто pip install cryptography

Криптовалюта та cffi поставляються як статично пов'язані колеса. Це буде працювати для pyenv Python, системного Python, домашнього Python тощо. Поки ви перебуваєте на останній піп, вам навіть не знадобиться компілятор.

Linux

Станом на версію 2.0 криптовалюта поставляється з багатьма колесами Linux1. Це означає, що користувачі з pip 8.1+, що працюють на дистрибутиві на основі glibc (майже все, крім Alpine Linux), і на x86 / x86-64 (вибачте, люди Raspberry Pi) більше не потребують компілятора чи заголовків, оскільки ви отримаєте попередньо складене колесо автоматично . Отже, перше, що вам слід спробувати, - це оновити піп!

Якщо ви не сумісні з багатьма linux1, ось що вам потрібно зробити:

Вам знадобиться компілятор 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


1
Я це зробив, але я все ще отримую цю помилку: "Не вдалося побудувати колесо для криптографії". Далі йде багато результатів (занадто багато для коментаря).
RolandiXor

4
Відповідь MacOSX спрацювала як принада на MacOS Sierra 10.12. Я оновив свій піп до найновішої версії на даний момент, 9.0.1.
Жоао Сантос

3
Оновіть до останнього pip (8.1.2 станом на червень 2016 року) та просто встановіть криптовалютну програму!
Тімоті Далтон

Мені довелося вручну оновлювати свій pipвік, тоді рішення OSX працює як шарм. ( pip 9.0.1, MacOS Sierra)
Бенджамінц

1
не працює на моєму Windows10, отримання помилки збірки не може відкрити включити файл: 'openssl / opensslv.h'
Totte Karlsson

43

Для тих, хто працює з ОС 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 Mavericks)

Ви також можете спробувати об'єднати прапори та команди 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

1
CFLAGS="-I/usr/include" pip install cryptography з reaperhulk працював на мене на Mavericks.
jjr4826

Ця команда у відповіді є невірною: другий та третій рядки повинні бути об'єднані (використовуйте зворотний косий ривок). Тоді це прекрасно працює, просто випробуваний на El Capitan. Цей коментар вище також невірний. Інші налаштування у відповіді потрібні, інакше ви отримаєте скарги пізніше.
Крістіан Тісмер

1
Як завжди @nathancahill HEHE
Нік Вудхамс

1
Довелося використовувати exportне env, але інакше працює.
Річард

$ ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographyпрацював на мене macOS 10.12з Python3.7(у virtualenv) при потребі cryptographyдля встановлення ansible.
jalanb

23

Це працювало для мене в Ель-Капітані

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/isissue/2350


Це перший на цій сторінці (і багато, багато інших ..), який працював для мене в Мохаве 10.14.5, дякую. Також подобається, що змінні середовища активні лише для команди, а не для сеансу, як в іншому місці.
Кріс

23

Це вирішило для мене проблему (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

14

Очевидно, що в останніх версіях OSX це може бути спричинено тим, що Apple доставляє власну версію OpenSSL, яка не працює з бібліотекою криптовалют.

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

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

перевстановлення virtualenv зробило це для мене, він використовував стару версію pip, яка не працювала, дякую!
Адрі Ван Х'юдт

Досі не вдається для мене. OSX 10.11.3 El Capitan тут.
agondiken

14

Як я вирішив "Не вдалося очистити збірку dir для криптографії"
(я прийшов сюди з google, щоб отримати цю помилку.)

Примітка : використання virtualenv

TL; DR:

мій файл /etc/apt/sources.listбув неправильно налаштований для мого debian 8.

Пояснення:

Я хотів встановити параміко. paramiko потребує криптографії.

У мене виникли ці помилки: спочатку з 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.

(Не зовсім ті самі помилки, що і ОП, але я тут, щоб допомогти в кінцевому підсумку )

Вирішення:

Після тестування майже кожної команди з усіх публікацій я закінчую перехід на
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 16.04. Спасибі
Алтаф Хуссей

14

Я спробував багато рішень вище, але лише після встановлення наступної lib я міг встановити cryptography:

sudo apt install libssl1.0

Я використовую Ubuntu 18.04, але він також буде працювати на Ubuntu 18.10.


1
Хоча цей код може відповісти на питання, надаючи додатковий контекст щодо того, як та / або чому він вирішує проблему, покращить довгострокове значення відповіді.
Nic3500

1
Це працювало для мене. Чому це спрацювало? Яка різниця між тим пакетом, який встановлює libssl1.0-dev та libssl-dev?
Кріс

2
Я не розумію чому, але тільки це мені теж допомогло
дію

Працював і для мене. Хоча піп все-таки отримує помилку в сегментації після оголошення про успішну установку, але я думаю, що це лише проблема з піп.
Роб Мошер


7

Відповідь Ніка Вудхема не працювала для OSX 10.11 El Capitan для мене, але це було.

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

Це наблизилося до роботи для мене, але також не вдалося .. El Capitan OSX 10.11.3 тут. не вдалося з кодом помилки 1 в / private / var / folders / d9 / 75cfznt17cjc124j3stq3qc40000gn / T / pip-build-Q_JjdE / cryptography /
agondiken

Мені довелося користуватися, CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographyі це встановлено. Довелося також додати LDFLAGS="-L/usr/local/opt/openssl/lib", щоб завантажувати бібліотеку. Коментар Діна Крістіана Армади , схоже, робить те ж саме, але використовуючи змінні, створені за допомогою варіння, замість жорсткого кодування.
шпига

4

Якщо ви використовуєте python3, вам потрібно встановити python3-dev. Це вирішило мою проблему sudo apt-get install python3-dev.


4

У мене виникли проблеми з установкою cryptography==1.7.1на Ubuntu 16.04, і жоден з вищезазначених відповідей не допоміг. Отже, я модернізував вимогу до сумісної 1.8.2 і налаштування пройшла успішно. Зауважте, що вам все одно знадобиться будувати основні та інші залежності, згадані у верхній (найбільш схваленій) відповіді .


3

У мене виникла проблема, 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

У мене виникли проблеми з встановленням bcrypt, оскільки не вдалося встановити cffi, але це виправлено як для cffi, так і для bcrypt. Дякую!
радіантрадон

Це не спрацювало для мене на Ель-Капітані. Також зверніть увагу на час бродячого періоду в кінці "криптовалюта встановити піп".
шейкер

@shacker Не маю ел-капітана, тому не можу перевірити це, але видалили бродячий період спасибі.
ThinkBonobo

@shacker Перевір мою відповідь на встановлення El Capitan
Дін Крістіан Армада


3

Якщо ви будуєте розподіл пітон пакета в .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

1
Ура, чудово працювали в докер-контейнері на альпійській основі!
Алекс Сабо

2

Я помітив, що оригінальний плакат чітко використовував інсталяцію Windows ... а найкращі відповіді вище - це для інших ОС ... так ось тут. Це передбачає, що ви встановили Python 2.7, який є найбільш широко підтримуваною (хоча і старою) версією.

  1. Встановіть " Visual C ++ компілятор для Python "
  2. Відкрийте вікно адміністративного командного рядка
  3. Повторно запустіть програму установки (пакет), наприклад

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

2

Нещодавно я зіткнувся з подібним питанням. У моєму випадку версії cffiта cryptographyнаписані вимоги.txt не були сумісні (cffi == 1.8.9 та криптографія == 1.9). Я вирішив оновлення cffiз останньою доступною версією.


1

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

Потім я запустив наступне з командного рядка згідно інструкцій @ 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

І це спрацювало.



1

я завантажив параміко повний вихідний код з pypi і зробив

встановити python setup.py

це працювало бездоганно

всі пакунки pythondev / openssl / libffi вже присутні в rhel.

завантаження rpms має невідповідність rpm та більше проблем


0

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

pip install cryptography

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

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

yum install libffi-devel

0

Ці дві команди виправили це для мене:

brew install openssl
brew link openssl --force

Джерело: https://github.com/phusion/passenger/isissue/1630#issuecomment-147527656


1
Я настійно рекомендую не робити brew link openssl --forceна OS X. Замість цього просто оновіть свій піп до останньої версії, і він без проблем встановить статично пов'язане колесо для cffi та криптографії.
Пол Керер

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.