Cannot “pip install cryptography” in Docker Alpine Linux 3.3 with OpenSSL 1.0.2g and Python 2.7

前端 未结 2 484
醉话见心
醉话见心 2021-02-01 03:42

Solved Wow, these guys are fast... It\'s basically this https://github.com/pyca/cryptography/issues/2750 It turned out that a security update for openssl was re

相关标签:
2条回答
  • 2021-02-01 04:25

    For those who are still experiencing problems installing cryptography==2.1.4 in Alpine 3.7 like this:

    writing manifest file 'src/cryptography.egg-info/SOURCES.txt'
    running build_ext
    generating cffi module 'build/temp.linux-x86_64-2.7/_padding.c'
    creating build/temp.linux-x86_64-2.7
    generating cffi module 'build/temp.linux-x86_64-2.7/_constant_time.c'
    generating cffi module 'build/temp.linux-x86_64-2.7/_openssl.c'
    building '_openssl' extension
    creating build/temp.linux-x86_64-2.7/build
    creating build/temp.linux-x86_64-2.7/build/temp.linux-x86_64-2.7
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -g -DNDEBUG -Os -fomit-frame-pointer -g -DTHREAD_STACK_SIZE=0x100000 -fPIC -I/usr/include/python2.7 -c build/temp.linux-x86_64-2.7/_openssl.c -o build/temp.linux-x86_64-2.7/build/temp.linux-x86_64-2.7/_openssl.o -Wconversion -Wno-error=sign-conversion
    build/temp.linux-x86_64-2.7/_openssl.c:493:30: fatal error: openssl/opensslv.h: No such file or directory
     #include <openssl/opensslv.h>
                                  ^
    compilation terminated.
    error: command 'gcc' failed with exit status 1
    

    Solution

    Install these dependencies in the Alpine container:

    $ apk add --no-cache libressl-dev musl-dev libffi-dev
    

    To install these dependencies using a Dockerfile:

    RUN apk add --no-cache \
            libressl-dev \
            musl-dev \
            libffi-dev && \
        pip install --no-cache-dir cryptography==2.1.4 && \
        apk del \
            libressl-dev \
            musl-dev \
            libffi-dev
    

    Reference

    Installation instructions for cryptography on Alpine can be found here:

    • https://cryptography.io/en/latest/installation/#building-cryptography-on-linux
    • A version from the time of writing is available on github

    Here is the relevant portion:

    Building cryptography on Linux

    [skipping over the part for non-Alpine Linux]

    $ pip install cryptography
    

    If you are on Alpine or just want to compile it yourself then cryptography requires a compiler, headers for Python (if you're not using pypy), and headers for the OpenSSL and libffi libraries available on your system.

    Alpine

    Replace python3-dev with python-dev if you're using Python 2.

    $ sudo apk add gcc musl-dev python3-dev libffi-dev openssl-dev
    

    If you get an error with openssl-dev you may have to use libressl-dev.

    0 讨论(0)
  • 2021-02-01 04:36

    Add this before install:

    RUN apk -U upgrade

    RUN apk add --no-cache libffi-dev openssl-dev

    0 讨论(0)
提交回复
热议问题