Подробный гайд по развёртыванию среды разработки Python 3.12 на CentOS 7 - Часть 2
7. Сборка и установка OpenSSL 1.1.1
Системный OpenSSL в CentOS 7 старый — обычно это 1.0.2. Современные версии Python требуют более новый OpenSSL. Поэтому соберём OpenSSL 1.1.1 отдельно.
Создайте каталог для исходников:
mkdir -p ~/src
cd ~/src
Скачайте и распакуйте исходники:
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar xzf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
Настройте сборку:
./config \
--prefix=/usr/local/openssl-1.1.1 \
--openssldir=/usr/local/openssl-1.1.1 \
--libdir=lib \
shared \
zlib
Соберите:
make -j"$(nproc)"
Установите:
sudo make install_sw install_ssldirs
Добавьте библиотеки в каталог конфигурации ld:
echo "/usr/local/openssl-1.1.1/lib" | sudo tee /etc/ld.so.conf.d/openssl-1.1.1.conf
sudo ldconfig
Проверьте:
/usr/local/openssl-1.1.1/bin/openssl version
Ожидаемый вывод примерно такой:
OpenSSL 1.1.1w 11 Sep 2023
Также проверьте библиотеки:
ls /usr/local/openssl-1.1.1/lib/libssl.so*
ls /usr/local/openssl-1.1.1/lib/libcrypto.so*
8. Сборка и установка Python 3
Далее соберём актуальный Python 3. Для примера используется версия 3.12.7. При необходимости замените её на нужную ветку 3.12.x.
Перейдите в каталог исходников:
cd ~/src
Задайте переменные:
PY_VER=3.12.7
PY_MAJOR=3.12
Скачайте исходники:
wget https://www.python.org/ftp/python/${PY_VER}/Python-${PY_VER}.tgz
tar xzf Python-${PY_VER}.tgz
cd Python-${PY_VER}
Настройте сборку:
./configure \
--prefix=/opt/python-${PY_VER} \
--enable-optimizations \
--with-ensurepip=install \
--with-openssl=/usr/local/openssl-1.1.1 \
--with-openssl-rpath=auto
Пояснения к ключевым флагам:
--prefix=/opt/python-${PY_VER}
устанавливает Python в отдельный каталог, не трогая системный;
--enable-optimizations
включает оптимизацию сборки, но увеличивает время установки;
--with-openssl=/usr/local/openssl-1.1.1
указывает использовать собранный нами OpenSSL;
--with-openssl-rpath=auto
помогает Python находить библиотеки OpenSSL без ручного LD_LIBRARY_PATH.
Соберите:
make -j"$(nproc)"
Установите:
sudo make altinstall
Именно altinstall безопаснее, потому что он не создаёт системную команду python, которая могла бы конфликтовать с системным Python 2.7.
9. Создание удобных симлинков
Создайте симлинки для новой версии Python:
sudo ln -sfn /opt/python-${PY_VER}/bin/python${PY_MAJOR} /usr/local/bin/python${PY_MAJOR}
sudo ln -sfn /opt/python-${PY_VER}/bin/pip${PY_MAJOR} /usr/local/bin/pip${PY_MAJOR}
sudo ln -sfn /opt/python-${PY_VER}/bin/python${PY_MAJOR} /usr/local/bin/python3
sudo ln -sfn /opt/python-${PY_VER}/bin/pip${PY_MAJOR} /usr/local/bin/pip3
Обновите кэш команд в текущей сессии:
hash -r
Проверьте, какая команда используется:
which python3
which python3.12
Ожидаемо:
/usr/local/bin/python3
/usr/local/bin/python3.12
Проверьте версию:
python3 --version
python3.12 --version
python3 -m pip --version
Проверьте поддержку SSL:
python3 -c "import ssl; print(ssl.OPENSSL_VERSION)"
Ожидаемый вывод примерно:
OpenSSL 1.1.1w 11 Sep 2023
Проверьте важные модули:
python3 -c "import sqlite3, ctypes, lzma, bz2, readline, ssl; print('Python modules OK')"
Если видите:
Python modules OK
значит базовая установка выполнена успешно.
10. Быстрая проверка установки
Создайте тестовое виртуальное окружение:
cd /tmp
python3 -m venv checkenv
Проверьте pip внутри окружения:
./checkenv/bin/python -m pip --version
Проверьте модули:
./checkenv/bin/python -c "import ssl, sqlite3, lzma, ctypes; print('venv OK')"
Удалите тестовое окружение:
rm -rf /tmp/checkenv
11. Структура рабочего каталога
Рекомендую заранее создать каталоги для проектов и служебных окружений:
mkdir -p ~/projects
mkdir -p ~/venvs
Например:
~/projects/ # ваши проекты
~/venvs/ # отдельные окружения для инструментов
12. Создание первого проекта
Создайте тестовый проект:
mkdir -p ~/projects/demo
cd ~/projects/demo
Создайте виртуальное окружение:
python3 -m venv .venv
Активируйте его:
source .venv/bin/activate
После активации приглашение обычно меняется и выглядит так:
(.venv) [dev@centos7 demo]$
Обновите пакетные инструменты внутри окружения:
python -m pip install --upgrade pip setuptools wheel
Установите тестовые пакеты:
pip install requests pytest ruff
Проверьте:
python -c "import requests; print(requests.__version__)"
pytest --version
ruff --version
Выйти из виртуального окружения можно командой:
deactivate
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.