ВНИМАНИЕ: в pip настроены местоположения, для которых требуется TLS/SSL, однако модуль ssl в Python недоступен.

"Следующая версия чаще всего требует полной установки." Ну это полная ерунда. Это НЕ винда. Вы можете обновить что угодно в любое время без повторной -установки и большую часть времени даже без перезагрузки. Очевидно, вам нужно перезагрузиться, чтобы обновить ядро, но это один из очень немногих случаев, когда вам это понадобится.

Ядра LTS, как правило, более стабильны из-за того, что, как правило, в них не вводятся новые функции, а вместо них вводятся исправления ошибок и исправления безопасности. В то время как новый выпуск всегда будет приносить новые функции и, следовательно, потенциально новые ошибки и проблемы. Если вы не используете сверхважный сервер и ваша главная задача — обеспечить стабильную работу, нет никакого смысла оставаться на долгосрочной версии.

7
27.04.2020, 17:13
3 ответа

Для этого мы должны скомпилировать его и установить каждую зависимость

  • Скачать при необходимостиhttps://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.x
  • Распаковать файл
    tar zxvf Python-3.7.0.tar.gz --directory /tmp
    cd /tmp
    
  • Редактировать файл Setup.distдля включения SSL
    cd Python-3.7.0/Modules/
    vi Setup.dist
    
  • un -прокомментируйте следующую строку и обновите 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
    
  • сохранить и скомпилировать Python для распространения
    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
    
1
19.03.2021, 02:25

Я думаю, что вы, возможно, непреднамеренно установили то, что ему не нужно. Ошибка похожа на ошибку, генерируемую библиотекой запросов 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
3
19.03.2021, 02:25

Это решение сработало для меня очень хорошо:

Проблемы с 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 в моем пути ).

0
27.05.2021, 16:51

Теги

Похожие вопросы