Ошибка сборки Python: не удалось построить модули ssl и hashlib

я добавляю python 2.7.13 в качестве altinstall, установив исходный код в мое поле RHEL4 с

wget --no-check-certificate https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz
tar -xvzf Python2.7.13.tar.xz
cd Python2.7.13
./configure --with-ensurepip=install
make
make test
make altinstall

чтобы я не перезаписывал python по умолчанию, который требуется для другого использования. Python 2.7.13 будет успешно установлен, но не хватает нескольких важных модулей для проекта, над которым я работаю.

первоначально модули _ssl и _haslib будут ошибаться в этом разделе.

Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _sqlite3           _tkinter
bsddb185           dbm                dl
gdbm               imageop            sunaudiodev

To find the necessary bits, look in setup.py in detect_modules() for the module's name.

Я установил openssl и гарантировал, что они были в расположение по умолчанию, что python искал их, поэтому теперь у меня есть необходимые биты, но затем он заканчивается этим сообщением вместо

Failed to build these modules:
_hashlib           _ssl

Ниже приведен весь вывод python2.7 setup.py build из распакованного пакета python. Я рыскал google и везде, где я могу найти, но я был неудачным ни в чем до сих пор

running build
running build_ext
INFO: Can't locate Tcl/Tk libs and/or headers
building '_ssl' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/ssl/include -I. -IInclude -I./Include -I/usr/local/include -I/usr/local/include/python2.7 -c /Python/Modules/_ssl.c -o build/temp.linux-x86_64-2.7/Python/Modules/_ssl.o
/Python/Modules/_ssl.c:57: warning: ignoring #pragma GCC diagnostic
/Python/Modules/_ssl.c: In function ‘_setup_ssl_threads’:
/Python/Modules/_ssl.c:4012: warning: comparison is always false due to limited range of data type
gcc -pthread -shared build/temp.linux-x86_64-2.7/Python/Modules/_ssl.o -L/usr/local/ssl/lib -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-2.7/_ssl.so
/usr/bin/ld: /usr/local/ssl/lib/libssl.a(s3_meth.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/ssl/lib/libssl.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
building '_hashlib' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/ssl/include -I. -IInclude -I./Include -I/usr/local/include -I/usr/local/include/python2.7 -c /Python/Modules/_hashopenssl.c -o build/temp.linux-x86_64-2.7/Python/Modules/_hashopenssl.o
gcc -pthread -shared build/temp.linux-x86_64-2.7/Python/Modules/_hashopenssl.o -L/usr/local/ssl/lib -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-2.7/_hashlib.so
/usr/bin/ld: /usr/local/ssl/lib/libcrypto.a(o_names.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/ssl/lib/libcrypto.a: could not read symbols: Bad value
collect2: ld returned 1 exit status

Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _sqlite3           _tkinter
bsddb185           dbm                dl
gdbm               imageop            sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.


Failed to build these modules:
_hashlib           _ssl

 running build_scripts

когда я пытаюсь использовать pip, который установлен с моим python 2.7.13, я получаю ошибку SSL, поэтому я устанавливаю все свои пакеты и другие модули из источника, такие как cx_Oracle и CherryPy.

pip2.7 install cffi
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting cffi
  Could not fetch URL https://pypi.python.org/simple/cffi/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping
  Could not find a version that satisfies the requirement cffi (from versions: )
No matching distribution found for cffi

Я также попытался добавить модуль SSL вручную с

wget --no-check-certificate https://pypi.python.org/packages/83/21/f469c9923235f8c36d5fd5334ed11e2681abad7e0032c5aba964dcaf9bbb/ssl-1.16.tar.gz#md5=fb12d335d56f3c8c7c1fefc1c06c4bfb
tar -xvzf ssl-1.16.tar.gz
cd ssl-1.16
python2.7 setup.py build

но я получаю сообщение об ошибке, что он не должен использоваться с python past 2.6

Traceback (most recent call last):
  File "setup.py", line 12, in <module>
    + "or earlier.")
ValueError: This extension should not be used with Python 2.6 or later (already built in), and has not been tested with Python 2.3.4 or earlier.

редактировать

Я искал решения и после прочесывания выходов setup.py build и нашел кого-то с аналогичной проблемой, которая, похоже, связана с openssl здесь так Я перестроил свой openssl с

./config enable-shared
make
make test
make install

и теперь я получаю немного другую ошибку о модуле ssl, я просто все больше и больше порчу свою среду?

python2.7 setup.py build
running build
running build_ext
INFO: Can't locate Tcl/Tk libs and/or headers
building '_ssl' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/ssl/include -I. -IInclude -I./Include -I/usr/local/include -I/usr/local/include/python2.7 -c /Python/Modules/_ssl.c -o build/temp.linux-x86_64-2.7/Python/Modules/_ssl.o
/Python/Modules/_ssl.c:57: warning: ignoring #pragma GCC diagnostic
/Python/Modules/_ssl.c: In function ‘_setup_ssl_threads’:
/Python/Modules/_ssl.c:4012: warning: comparison is always false due to limited range of data type
gcc -pthread -shared build/temp.linux-x86_64-2.7/Python/Modules/_ssl.o -L/usr/local/ssl/lib -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-2.7/_ssl.so
*** WARNING: renaming "_ssl" since importing it failed: libssl.so.1.0.0: cannot open shared object file: No such file or directory
building '_hashlib' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/ssl/include -I. -IInclude -I./Include -I/usr/local/include -I/usr/local/include/python2.7 -c /Python/Modules/_hashopenssl.c -o build/temp.linux-x86_64-2.7/Python/Modules/_hashopenssl.o
gcc -pthread -shared build/temp.linux-x86_64-2.7/Python/Modules/_hashopenssl.o -L/usr/local/ssl/lib -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-2.7/_hashlib.so
*** WARNING: renaming "_hashlib" since importing it failed: libssl.so.1.0.0: cannot open shared object file: No such file or directory

Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _sqlite3           _tkinter
bsddb185           dbm                dl
gdbm               imageop            sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.


Failed to build these modules:
_hashlib           _ssl

running build_scripts

новое предупреждающее сообщение в выводе *** WARNING: renaming "_ssl" since importing it failed: libssl.so.1.0.0: cannot open shared object file: No such file or directory указывает, что файл не существует, но я вижу его в /usr/local/ssl/ lib / as libssl.Итак.1.0.0 и может найти его с помощью поиска

find / -name libssl.so.1.0.0
/usr/local/ssl/lib/libssl.so.1.0.0
/tmp/openssl-1.0.2l/libssl.so.1.0.0

1 ответов


Ну, я не знаю, чувствовать ли себя глупо, и это просто обычная вещь, которую я полностью пропустил, так как я довольно новичок в Linux CLI. Но я смог решить свою ошибку сборки для модулей _hashlib и _ssl с помощью нескольких простых шагов вhttps://stackoverflow.com/a/28460293/8222554 Ответ АМО.

я сначала попытался ldconfig но это не решило мою проблему, поэтому я просто посмотрел на то, что было в моем LD_LIBRARY_PATH с

echo $LD_LIBRARY_PATH

а затем вернулись эти места, которые не включали, где libssl.Итак.1.0.0 файл был обнаружен

/usr/lib/oracle/11.2/client64/lib:/usr/lib/oracle/11.2/client/lib

затем я выполнил шаги, которые я сделал ранее при установке Oracle instant client и модуля cx_Oracle, которые были легко выложены на этом блоге: https://ubuntugeeknerd.blogspot.com/2013/08/how-to-install-oxoracle-in-rhel-64-bit.html

те шаги, которые я использовал для модуля ssl, были такими следуйте за

export LD_LIBRARY_PATH=/usr/local/ssl/lib/:$LD_LIBRARY_PATH >> ~/.bashrc
echo $LD_LIBRARY_PATH
/usr/local/ssl/lib/:/usr/lib/oracle/11.2/client64/lib:/usr/lib/oracle/11.2/client/lib

после этого я сделал python2.7 setup.py clean следовал по python2.7 setup.py build и последний python2.7 setup.py install. Выход не возвращал никаких неудачных построений, кроме тех, для которых у меня не было необходимых битов (и не искал строить в любом случае).

Я могу проверить, что модуль ssl существует сейчас при открытии python и успешном импорте модуля

Python 2.7.13 (default, Jun 26 2017, 15:21:33)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>>

надеюсь, это будет удобно для тех, кто сталкивается с подобной проблемой