ไม่สามารถติดตั้งแพ็คเกจการเข้ารหัส Python ด้วย PIP และ setup.py


256

เมื่อฉันพยายามติดตั้งแพคเกจการเข้ารหัสสำหรับ 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 library ที่มีอยู่ในระบบของคุณ

สำหรับDebian และ Ubuntuคำสั่งต่อไปนี้จะช่วยให้มั่นใจได้ว่ามีการติดตั้งการพึ่งพาที่จำเป็น:

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

สำหรับFedora และ RHEL-Derivativeคำสั่งต่อไปนี้จะทำให้มั่นใจได้ว่ามีการติดตั้งการพึ่งพาที่จำเป็น:

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

ตอนนี้คุณควรจะสามารถสร้างและติดตั้งการเข้ารหัสด้วยปกติ

pip install cryptography

1
ขอบคุณทำงานอย่างสมบูรณ์แบบ! มี VS2010 ฉันต้อง: SET VS90COMNTOOLS =% VS100COMNTOOLS% และเพิ่มคำต่อท้าย "mt" ลงในชื่อ lib
Maciek

//, ฉันสามารถยืนยันได้ว่าสิ่งนี้ใช้ได้กับเครื่อง CEntOS 6.3 ที่มี Python 3.3 พร้อมกับข้อผิดพลาดที่คล้ายกันกับที่โพสต์ในคำถามเดิม
Nathan Basanese

4
ดูเหมือนว่าlibffi-devแพ็คเกจนั้นเป็นกุญแจสำคัญเลย ฉันไม่ต้องการกำหนดค่าเพิ่มเติมอีก แต่ชื่อแพ็คเกจนั้นไม่ปรากฏในบันทึกข้อผิดพลาด: - / ขอบคุณ
m3nda

6
อย่าลืมที่จะแทนที่python-devด้วยpython3-devถ้าคุณกำลังใช้ python3
ด้วน

1
FWIW ฉันใช้ Debian 9 และต้องทำการติดตั้ง libssl1.0-dev apt-getก่อนที่ฉันจะหยุดรับข้อผิดพลาดในระหว่างการติดตั้งการเข้ารหัส pip
Mike Pennington

113

นี่เป็นข้อมูลย่อที่พบในหน้าเอกสารการติดตั้งของการเข้ารหัส ดูหน้านั้นสำหรับรายละเอียดล่าสุด

เนื่องจากคำถาม SO ขึ้นมาเรื่อย ๆ ฉันจะตอบกลับที่นี่ด้วย (ฉันเป็นหนึ่งในนักพัฒนา pyca / cryptography) นี่คือสิ่งที่คุณต้องติดตั้ง pyca / cryptography บนแพลตฟอร์มหลักทั้ง 3

โปรดทราบว่าในกรณีเหล่านี้ขอแนะนำอย่างยิ่งให้คุณติดตั้งลงใน virtualenv และไม่ได้อยู่ในพื้นที่แพ็คเกจทั่วโลก นี่ไม่ใช่เฉพาะการเข้ารหัส แต่เป็นคำแนะนำทั่วไปเพื่อให้การติดตั้ง Python ของคุณน่าเชื่อถือ พื้นที่แพคเกจทั่วโลกในระบบปฏิบัติการที่ให้ Pythons เป็นเจ้าของโดยระบบและติดตั้งสิ่งต่าง ๆ ผ่านจุดเล็ก ๆ เข้าไปเพื่อขอปัญหา

ของ windows

อัปเกรดเป็น pip ล่าสุด (8.1.2 ณ เดือนมิถุนายน 2559) และเพียงแค่ pip install cryptography

การเข้ารหัสและ cffi ถูกจัดส่งเป็นล้อที่เชื่อมโยงแบบคงที่

OS X

อัปเกรดเป็น pip ล่าสุด (8.1.2 ณ เดือนมิถุนายน 2559) และเพียงแค่ pip install cryptography

การเข้ารหัสและ cffi ถูกจัดส่งเป็นล้อที่เชื่อมโยงแบบคงที่ สิ่งนี้จะใช้ได้กับ pyenv Python, system Python, homebrew Python และอื่น ๆ ตราบใดที่คุณใช้ pip ล่าสุดคุณก็ไม่จำเป็นต้องมีคอมไพเลอร์

ลินุกซ์

ในฐานะของการเข้ารหัสรุ่น 2.0 มีล้อจำนวนมาก linux1 ซึ่งหมายความว่าผู้ใช้ที่มี pip 8.1+ ที่ทำงานบนการแจกจ่ายแบบอิง glibc (เกือบทุกอย่างยกเว้น Alpine Linux) และใน x86 / x86-64 (ขออภัยคน Raspberry Pi) ไม่ต้องการคอมไพเลอร์หรือส่วนหัวอีกต่อไปเพราะคุณจะได้ล้อล้อที่เตรียมไว้ล่วงหน้าโดยอัตโนมัติ . ดังนั้นสิ่งแรกที่คุณควรลองคืออัพเกรด pip ของคุณ!

หากคุณไม่ได้เข้ากันได้กับ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
ฉันได้ทำไปแล้ว แต่ฉันยังคงได้รับข้อผิดพลาดนี้: "Failed building wheel for cryptography" ตามด้วยเอาต์พุตจำนวนมาก (มากเกินไปสำหรับความคิดเห็น)
RolandiXor

4
การตอบสนองของ MacOSX นั้นทำงานได้ดีใน MacOS Sierra 10.12 ฉันได้อัพเกรด pip เป็นเวอร์ชันล่าสุดในเวลานี้ 9.0.1
João Santos

3
อัปเกรดเป็น pip ล่าสุด (8.1.2 ณ เดือนมิถุนายน 2559) และเพียงแค่ติดตั้งการเข้ารหัสแบบ pip!
Timothy Dalton

ฉันต้องอัปเดตด้วยตนเองpipซึ่งเป็นวัยแล้วด้วยวิธีการแก้ปัญหา OSX ทำงานได้อย่างมีเสน่ห์ ( pip 9.0.1, MacOS Sierra)
benjaminz

1
ไม่ทำงานบน windows10 ของฉันการสร้างข้อผิดพลาดไม่สามารถเปิดรวมไฟล์ได้: 'openssl / opensslv.h'
Totte Karlsson

43

สำหรับผู้ที่ใช้งาน 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 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 ความคิดเห็นด้านบนนี้ไม่ถูกต้องเช่นกัน การตั้งค่าอื่น ๆ ในคำตอบจำเป็นหรือคุณจะได้รับการร้องเรียนในภายหลัง
Christian Tismer

1
เช่นเดียวกับ @nathancahill HEHE
Nick Woodhams

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

สิ่งนี้ใช้ได้กับฉันใน El Capitan

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


นี่เป็นครั้งแรกในหน้านี้ (และอื่น ๆ อีกมากมาย .. ) ที่ทำงานให้ฉันในโมฮาวี 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 และอาจเป็น env เสมือนจริงด้วย ดังนั้นสำหรับฉันทางออกคือ:

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

virtualenv ติดตั้งให้ฉันมันใช้ pip รุ่นเก่าซึ่งทำให้มันล้มเหลวขอบคุณ!
Adri Van Houdt

ยังคงล้มเหลวสำหรับฉัน OSX 10.11.3 El Capitan ที่นี่
agondiken

14

ฉันแก้ไขได้อย่างไร "การทำความสะอาดไม่สำเร็จสร้าง dir สำหรับการเข้ารหัส"
(ฉันมาจาก google เพื่อส่งผลให้เกิดข้อผิดพลาดนี้)

หมายเหตุ : การใช้ virtualenv

TL; DR:

ไฟล์ของฉัน/etc/apt/sources.listไม่ได้รับการกำหนดค่าอย่างถูกต้องสำหรับเดเบียน 8 ของฉัน

คำอธิบาย:

ฉันต้องการติดตั้ง paramiko 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.

(ไม่ใช่ข้อผิดพลาดเดียวกับ OP แต่ฉันอยู่ที่นี่เพื่อช่วยในที่สุด )

แก้:

หลังจากทดสอบเกือบทุกคำสั่งจากทุกโพสต์ฉันจบลงที่
https://wiki.debian.org/SourcesList
และคัดลอกไฟล์ config ที่เพียงพอของฉันมาวาง/etc/apt/sources.list

แล้ว:

sudo aptitude update

แล้ว

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

แล้ว

pip install cryptography

HTH


แก้ไขปัญหาของฉันบนเซิร์ฟเวอร์ ubuntu 16.04 ขอบคุณ
Altaf Hussain

14

ฉันลองวิธีแก้ไขปัญหาด้านบนมากมาย แต่หลังจากการติดตั้ง lib ต่อไปนี้ฉันสามารถติดตั้งได้cryptography:

sudo apt install libssl1.0

ฉันใช้ Ubuntu 18.04 แต่จะใช้ได้กับ Ubuntu 18.10 เช่นกัน


1
ในขณะที่รหัสนี้อาจตอบคำถามให้บริบทเพิ่มเติมเกี่ยวกับวิธีการและ / หรือทำไมมันแก้ปัญหาจะปรับปรุงค่าระยะยาวของคำตอบ
Nic3500

1
สิ่งนี้ใช้ได้สำหรับฉัน มันทำงานทำไม อะไรคือความแตกต่างระหว่างแพ็คเกจที่ติดตั้ง libssl1.0-dev และ libssl-dev?
Chris

2
ฉันไม่เข้าใจว่าทำไม แต่สิ่งนี้ก็ช่วยฉันด้วยเช่นกัน
dyus

ทำงานให้ฉันด้วย แม้ว่า pip จะยังคงได้รับข้อผิดพลาดในการแบ่งกลุ่มหลังจากประกาศการติดตั้งที่ประสบความสำเร็จ แต่ฉันคิดว่านั่นเป็นเพียงปัญหา pip
Rob Mosher

10

สิ่งนี้ใช้ได้สำหรับฉัน (ฉันใช้ 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

แหล่งที่มา:

https://stackoverflow.com/a/32800685/5123544

https://stackoverflow.com/a/29202163/5123544


7

คำตอบของ Nick Woodham ไม่ได้ทำงานกับ 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 ใน / ส่วนตัว / var / โฟลเดอร์ / 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"เช่นกันเพื่อให้ห้องสมุดโหลด ความคิดเห็นของDean Christian Armadaดูเหมือนจะทำในสิ่งเดียวกัน แต่การใช้ Brew สร้างตัวแปรแทนการเข้ารหัสอย่างหนัก
spig

4

หากคุณกำลังใช้ python3 python3-devคุณจะต้องติดตั้ง sudo apt-get install python3-devการแก้ไขปัญหาของฉันนี้


4

ฉันมีปัญหากับการติดตั้งcryptography==1.7.1บน Ubuntu 16.04 และไม่มีคำตอบข้างต้นช่วยเลย ดังนั้นฉันอัพเกรดข้อกำหนดเป็น1.8.2 ที่เข้ากันได้และการตั้งค่าก็ประสบความสำเร็จ โปรดทราบว่าคุณยังคงต้องสร้างที่จำเป็นและการอ้างอิงอื่น ๆ ที่กล่าวถึงในส่วนบน (upvoted มากที่สุด) คำตอบ


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 ขอบคุณ!
radiantradon

สิ่งนี้ไม่ได้ผลสำหรับฉันใน El Capitan และโปรดสังเกตช่วงเวลาจรจัดที่ตอนท้ายของ "การเข้ารหัสการติดตั้งจุดเล็ก ๆ "
shacker

@ shacker ไม่มี el capitan ดังนั้นไม่สามารถทดสอบได้ แต่ลบระยะเวลาจรจัดออกขอบคุณ
ThinkBonobo

@ shacker ตรวจสอบคำตอบของฉันสำหรับการติดตั้ง El Capitan
Dean Christian Armada

3

สิ่งนี้ใช้ได้กับ El Capitan ด้วย MacPorts:

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

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
ไชโยทำงานได้ดีในตู้คอนเทนเนอร์ที่ใช้อัลไพน์!
Alex Szabó

2

ฉันสังเกตเห็นว่าโปสเตอร์ดั้งเดิมนั้นชัดเจนโดยใช้การติดตั้ง windows ... และคำตอบที่ดีที่สุดข้างต้นล้วนสำหรับระบบปฏิบัติการอื่น ๆ ... ดังนั้นที่นี่จะไป สิ่งนี้ถือว่าคุณได้ติดตั้ง Python 2.7 ซึ่งเป็นเวอร์ชันที่ได้รับการสนับสนุนอย่างกว้างขวางที่สุด (แม้ว่าเวอร์ชั่นเก่า)

  1. ติดตั้ง " Visual C ++ Compiler สำหรับ Python "
  2. เปิดหน้าต่างพรอมต์คำสั่งของผู้ดูแลระบบ
  3. เรียกใช้การติดตั้ง pip (แพ็คเกจ) อีกครั้งเช่น

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

2

ฉันพบปัญหาที่คล้ายกันเมื่อเร็ว ๆ นี้ ในกรณีของฉันเวอร์ชันของcffiและcryptographyเขียนใน requirements.txt ไม่เข้ากันได้ (cffi == 1.8.9 และ cryptography == 1.9) ฉันแก้ไขการอัปเดตcffiด้วยเวอร์ชันล่าสุดที่มีอยู่


1

ฉันวิ่งเข้าไปในปัญหาเดียวกันนี้พยายามติดตั้ง 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 ที่สอดคล้องกันไปยังส่วนย่อยที่สอดคล้องกันหรือคำสั่งแรกด้านล่างอาจไม่ทำงาน

จากนั้นฉันก็รันสิ่งต่อไปนี้จาก commandline ตามคำแนะนำของ @ jsonm (tweaked สำหรับ config ของฉัน) ...

C:\> "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_amd64 
C:\> set LIB=C:\OpenSSL-Win64\lib;%LIB% 
C:\> set INCLUDE=C:\OpenSSL-Win64\include;%INCLUDE% 
C:\> pip install cryptography

และมันก็ใช้งานได้


1

ฉันมีข้อผิดพลาดนี้เช่นกัน หลังจากดำเนินการต่อไปที่จะได้รับข้อผิดพลาดนี้แม้หลังจากการติดตั้ง OpenSSL ผมในที่สุดก็พยายามติดตั้งจากไฟล์ล้อจากhttps://pypi.python.org/pypi/cryptography/0.2.2#downloads มันได้ผล!


1

ฉันดาวน์โหลด paramiko source code แบบเต็มจาก 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/issues/1630#issuecomment-147527656


1
ฉันไม่แนะนำให้ทำbrew link openssl --forceบน OS X แต่เพียงอัพเกรด pip ของคุณเป็นเวอร์ชั่นล่าสุดและมันจะติดตั้งล้อที่เชื่อมโยงแบบคงที่สำหรับทั้ง cffi และ cryptography โดยไม่มีปัญหา
Paul Kehrer

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.