У меня был такой успех.

аюсь скомпилировать Python 3.6.2 на MacOS 10.11 в соответствии с инструкциями наhttps://bugs.python.org/issue29095.

Я использовал homebrew для установки openSSL в стандартную папку, а затем добавил LDFLAGS, CFLAGS и CPPFLAGS в мою среду:

$ printenv | grep FLAGS
LDFLAGS=/usr/local/Cellar/openssl/1.0.2l/lib/
CFLAGS=-I/usr/local/Cellar/openssl/1.0.2l/include/openssl
CPPFLAGS=-I/usr/local/Cellar/openssl/1.0.2l/include/openssl

Затем в той же оболочке я компилирую Python в нужное место, необходимое для моего варианта использования:

$ sudo ./configure --prefix=/oebuild/python/python-3.6.1
$ sudo make
$ sudo make install

Однако модуль SSL не создается. Журнал сборки говорит это:

Сборка Python успешно завершена! Необходимые биты для сборки этих дополнительных модулей не найдены: _gdbm _ssl ossaudiodev
SPWD
Чтобы найти необходимые биты, посмотрите в файле setup.py в detect_modules () имя модуля.

Ответы на вопрос(2)

У меня был такой успех.

  brew update
  brew install openssl

  # these were suggested by brew itself.

  export LDFLAGS="-L/usr/local/opt/openssl/lib"
  export CPPFLAGS="-I/usr/local/opt/openssl/include"
  export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig"

  # vanilla compilation

  ./configure
  make
Решение Вопроса

которые я нашел ранее, не работал для меня, но в конечном итоге я понял это с помощью другого ответа, не упомянутого ранее. Вот фактическое исправление:https://stackoverflow.com/a/20740964/2934226

По сути, CPPFLAGS и LDFLAGS не могут быть установлены в среде; вам нужно установить их вместе с командой configure, например так:

./configure CPPFLAGS="-I[openSSL install location]/include" LDFLAGS="-L[openSSL install location]/lib" [other flags here]

А потом после компиляции и установки все заработало!

$ python3 -c "import ssl; print(ssl.OPENSSL_VERSION)"
OpenSSL 1.0.2l  25 May 2017

Вот то, что не сработало, и почему:

Как мне скомпилировать Python 3.4 с пользовательским OpenSSL? не помогает, потому что вы не можете установить LDFLAGS, CFLAGS или CPPFLAGS в среде; setup.py не передает их фактическим этапам компиляции. И даже если настройка LD_LIBRARY_PATH может работать, вы не хотите делать это, потому что это опасно (см.http://xahlee.info/UnixResource_dir/_/ldpath.html). Наконец, --with-ssl не является допустимым аргументом configure, и указанный там патч для его добавления не применяется корректно.

Доморощенный отказывается от ссылки OpenSSL не применяется, когда вы пытаетесь собрать что-то из исходного кода, вместо того, чтобы пытаться получить уже скомпилированный dylib для поиска перемещенной библиотеки. Кроме того, создание символических ссылок в / usr / local опасно и может привести к тому, что программы будут компилироваться с более новыми заголовками, но использовать более старые системные двоичные файлы.

Как включить SSL с Python сборки на MacOS не работает должным образом. Редактирование setup.py, чтобы добавить lib и включить каталоги, в которые вы установили мой openSSLчастично работает и позволяет компилировать в поддержку SSL. Увы, их нельзя импортировать, потому что старая версия все еще используется:

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

[...]

building '_ssl' extension
gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -I/usr/local/opt/openssl/include/ -I./Include -I/oebuild/python/python-3.6.1/include -I. -I/usr/local/include -I/oebuild/python/src/Python-3.6.1/Include -I/oebuild/python/src/Python-3.6.1 -c /oebuild/python/src/Python-3.6.1/Modules/_ssl.c -o build/temp.macosx-10.11-x86_64-3.6/oebuild/python/src/Python-3.6.1/Modules/_ssl.o
gcc -bundle -undefined dynamic_lookup build/temp.macosx-10.11-x86_64-3.6/oebuild/python/src/Python-3.6.1/Modules/_ssl.o -L/oebuild/python/python-3.6.1/lib -L/usr/local/lib -lssl -lcrypto -o build/lib.macosx-10.11-x86_64-3.6/_ssl.cpython-36m-darwin.so
building '_hashlib' extension
gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -I/usr/local/opt/openssl/include/ -I./Include -I/oebuild/python/python-3.6.1/include -I. -I/usr/local/include -I/oebuild/python/src/Python-3.6.1/Include -I/oebuild/python/src/Python-3.6.1 -c /oebuild/python/src/Python-3.6.1/Modules/_hashopenssl.c -o build/temp.macosx-10.11-x86_64-3.6/oebuild/python/src/Python-3.6.1/Modules/_hashopenssl.o
gcc -bundle -undefined dynamic_lookup build/temp.macosx-10.11-x86_64-3.6/oebuild/python/src/Python-3.6.1/Modules/_hashopenssl.o -L/oebuild/python/python-3.6.1/lib -L/usr/local/lib -lssl -lcrypto -o build/lib.macosx-10.11-x86_64-3.6/_hashlib.cpython-36m-darwin.so
*** WARNING: renaming "_ssl" since importing it failed: dlopen(build/lib.macosx-10.11-x86_64-3.6/_ssl.cpython-36m-darwin.so, 2): Symbol not found: _CRYPTO_THREADID_set_callback
  Referenced from: build/lib.macosx-10.11-x86_64-3.6/_ssl.cpython-36m-darwin.so
  Expected in: flat namespace
 in build/lib.macosx-10.11-x86_64-3.6/_ssl.cpython-36m-darwin.so
*** WARNING: renaming "_hashlib" since importing it failed: dlopen(build/lib.macosx-10.11-x86_64-3.6/_hashlib.cpython-36m-darwin.so, 2): Symbol not found: _HMAC_CTX_copy
  Referenced from: build/lib.macosx-10.11-x86_64-3.6/_hashlib.cpython-36m-darwin.so
  Expected in: flat namespace
 in build/lib.macosx-10.11-x86_64-3.6/_hashlib.cpython-36m-darwin.so

otool -L показывает проблему:

$ otool -L build/lib.macosx-10.11-x86_64-3.6/_ssl.cpython-36m-darwin_failed.so 
build/lib.macosx-10.11-x86_64-3.6/_ssl.cpython-36m-darwin_failed.so:
    /usr/lib/libssl.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8)
    /usr/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)

(CRYPTO_THREADID был введен в версии 1.0.0, в соответствии сhttps://wiki.openssl.org/index.php/Manual:Threads(3)#HISTORY)

 Kristopher Johnson13 апр. 2018 г., 13:28
Обратите внимание, что вы можете получить "место установки openSSL" сbrew --prefix opensslтак что ваша командная строка может быть./configure CPPFLAGS="-I$(brew --prefix openssl)/include" LDFLAGS="-L$(brew --prefix openssl)/lib"
 Ali Sajid05 янв. 2019 г., 13:42
где находится файл ./configure
 iLikeDirt08 янв. 2019 г., 23:40
Внутри исходного каталога Python
 Chris Reyes10 мая 2018 г., 19:17
Это работает не только для установок python3, но и для python2. (Пробовал с 2.7.6)

Ваш ответ на вопрос