"Следующая версия чаще всего требует полной установки." Ну это полная ерунда. Это НЕ винда. Вы можете обновить что угодно в любое время без повторной -установки и большую часть времени даже без перезагрузки. Очевидно, вам нужно перезагрузиться, чтобы обновить ядро, но это один из очень немногих случаев, когда вам это понадобится.
Ядра LTS, как правило, более стабильны из-за того, что, как правило, в них не вводятся новые функции, а вместо них вводятся исправления ошибок и исправления безопасности. В то время как новый выпуск всегда будет приносить новые функции и, следовательно, потенциально новые ошибки и проблемы. Если вы не используете сверхважный сервер и ваша главная задача — обеспечить стабильную работу, нет никакого смысла оставаться на долгосрочной версии.
Для этого мы должны скомпилировать его и установить каждую зависимость
tar zxvf Python-3.7.0.tar.gz --directory /tmp
cd /tmp
Setup.dist
для включения SSLcd Python-3.7.0/Modules/
vi Setup.dist
openssl
домашнюю страницуSSL=/usr/local/ssl <--- substitute with your openssl home directory
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
cd../
./configure --enable-optimizations CFLAGS="-O3" --prefix=/opt/primeur/python3.7
make
make install
Попробуйте
cd /opt/primeur/python3.7/bin
[root@myserver bin]# python3
Python 3.7.0 (default, May 5 2020, 22:31:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
обновить pip
командой
[root@myserver bin]#./pip3 install --upgrade pip
установите любую зависимость, используя pip3 install
, например
[root@myserver bin]#./pip3 install termcolor
Collecting termcolor
Using cached https://files.pythonhosted.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz
Installing collected packages: termcolor
Running setup.py install for termcolor... done
Successfully installed termcolor-1.1.0
Я думаю, что вы, возможно, непреднамеренно установили то, что ему не нужно. Ошибка похожа на ошибку, генерируемую библиотекой запросов python .
Я бы проверил, правильно ли он установлен и соблюдены ли его зависимости. Я заметил, что python-openssl
— это только рекомендуемый пакет, а не обязательный. Возможно, вы захотите посмотреть, поможет ли установка этого.
Package: python3-requests
Depends: python3-certifi, python3-chardet (<< 3.1.0), python3-idna, python3-urllib3 (<< 1.26), python3:any, ca-certificates, python3-chardet (>= 3.0.2), python3-urllib3 (>= 1.21.1)
Suggests: python3-cryptography, python3-idna (>= 2.5), python3-openssl, python3-socks, python-requests-doc
Это решение сработало для меня очень хорошо:
Проблемы с SSL при установке Python 3.7 из исходного кода
Спасибо, Джош.
Подвожу итоги процедуры:
Шаги
Я решил снова установить openSSL, загрузив последнюю версию исходного кода.
sudo apt-get install -y wget
mkdir /tmp/openssl
cd /tmp/openssl
wget https://www.openssl.org/source/openssl-1.0.2q.tar.gz
tar xvf openssl-1.0.2q.tar.gz
cd /tmp/openssl/openssl-1.0.2q
./config
make
sudo make install
Ключ здесь (и причина, по которой я пишу этот пост ), состоит в том, чтобы показать, как сообщить Python, где находится эта новая установка openSSL. По умолчанию ваша ручная установка openSSL будет в /usr/local/ssl
. Вы можете подтвердить это, проверив время изменения каталога ssl с помощью ls -la /usr/local/ssl
.
По умолчанию Python не будет искать здесь. Нам нужно это исправить. Для начала запустите первую часть скрипта установки Python (, как показано ниже ).
# Install requirements
sudo apt-get install -y build-essential
sudo apt-get install -y checkinstall
sudo apt-get install -y libreadline-gplv2-dev
sudo apt-get install -y libncursesw5-dev
sudo apt-get install -y libssl-dev
sudo apt-get install -y libsqlite3-dev
sudo apt-get install -y tk-dev
sudo apt-get install -y libgdbm-dev
sudo apt-get install -y libc6-dev
sudo apt-get install -y libbz2-dev
sudo apt-get install -y zlib1g-dev
sudo apt-get install -y openssl
sudo apt-get install -y libffi-dev
sudo apt-get install -y python3-dev
sudo apt-get install -y python3-setuptools
sudo apt-get install -y wget
# Prepare to build
mkdir /tmp/Python37
cd /tmp/Python37
# Pull down Python 3.7, build, and install
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
tar xvf Python-3.7.0.tar.xz
Теперь СТОП, cd /tmp/Python37/Python-3.7.0
и откройте файлModules/Setup.dist
Вы должны увидеть следующие строки COMMENTED.
# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/usr/local/ssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
Что вам нужно сделать, так это РАСКОММЕНТИРОВАТЬ эти строки, чтобы они были видны во время нашей компиляции Python. Теперь вы можете закончить, запустив последние несколько строк нашего скрипта Python.
cd /tmp/Python37/Python-3.7.0
./configure --enable-optimizations
sudo make altinstall
К этому моменту у меня уже был рабочий python и pip (, сопоставленный с python3.7 и pip3.7 в моем пути ).