[Python] On CentOS, how do I build Python 3.9 from source while incorporating my openssl...

Discussão em 'Python' iniciado por Stack, Janeiro 26, 2025.

  1. Stack

    Stack Membro Participativo

    I'm trying to build Python 3.9.1 with SSL support on CentOS 7.

    [myuser@server Python-3.9.1]$ which openssl
    /usr/local/bin/openssl
    [myuser@server Python-3.9.1]$ openssl version
    OpenSSL 1.1.1g 21 Apr 2020


    Running this command

    sudo ./configure CPPFLAGS="-I/usr/local/openssl/include" LDFLAGS="-L/usr/local/openssl/lib" --with-ssl


    followed by "make" worked for Python 3.7, but when i run the above on 3.9 and then run make I get this output

    ...
    Python build finished successfully!
    The necessary bits to build these optional modules were not found:
    _lzma _tkinter _uuid
    To find the necessary bits, look in setup.py in detect_modules() for the module's name.


    The following modules found by detect_modules() in setup.py, have been
    built by the Makefile instead, as configured by the Setup files:
    _abc atexit pwd
    time


    Following modules built successfully but were removed because they could not be imported:
    _hashlib _ssl


    Could not build the ssl module!
    Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
    LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381

    running build_scripts
    creating build/scripts-3.9
    copying and adjusting /usr/src/Python-3.9.1/Tools/scripts/pydoc3 -> build/scripts-3.9
    copying and adjusting /usr/src/Python-3.9.1/Tools/scripts/idle3 -> build/scripts-3.9
    copying and adjusting /usr/src/Python-3.9.1/Tools/scripts/2to3 -> build/scripts-3.9
    changing mode of build/scripts-3.9/pydoc3 from 644 to 755
    changing mode of build/scripts-3.9/idle3 from 644 to 755
    changing mode of build/scripts-3.9/2to3 from 644 to 755
    renaming build/scripts-3.9/pydoc3 to build/scripts-3.9/pydoc3.9
    renaming build/scripts-3.9/idle3 to build/scripts-3.9/idle3.9
    renaming build/scripts-3.9/2to3 to build/scripts-3.9/2to3-3.9
    /bin/install -c -m 644 ./Tools/gdb/libpython.py python-gdb.py
    gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/usr/local/openssl/include -DPy_BUILD_CORE -o Programs/_testembed.o ./Programs/_testembed.c
    gcc -pthread -L/usr/local/openssl/lib -Xlinker -export-dynamic -o Programs/_testembed Programs/_testembed.o libpython3.9.a -lcrypt -lpthread -ldl -lutil -lm -lm
    sed -e "s,@EXENAME@,/usr/local/bin/python3.9," < ./Misc/python-config.in >python-config.py
    LC_ALL=C sed -e 's,\$(\([A-Za-z0-9_]*\)),\$\{\1\},g' < Misc/python-config.sh >python-config


    So evidently Python 3.9 has NOT been built with SSL. What else do I need to do to build Python 3.9 with the openssl module I have installed?

    Continue reading...

Compartilhe esta Página