Три шага с использованием Python 3.5 от Коллекции программного обеспечения:
sudo yum install centos-release-scl
sudo yum install rh-python35
scl enable rh-python35 bash
Обратите внимание, что sudo не требуется для последней команды. Теперь мы видим, что python 3 является значением по умолчанию для текущей оболочки:
python --version
Python 3.5.1
Просто пропустите последнюю команду, если вы предпочитаете использовать Python 2 по умолчанию для текущей оболочки.
Теперь предположим, что ваши скрипты Python 3 выдают ошибку типа /usr/bin/env: python3: No such file or directory
. Это потому, что установка обычно выполняется по необычному пути:
/opt/rh/rh-python35/root/bin/python3
Вышеупомянутое обычно является символической ссылкой. Если вы хотите, чтобы python3
автоматически добавлялся в $PATH
для всех пользователей при запуске, один из способов сделать это - добавить такой файл, как:
sudo vim /etc/profile.d/rh-python35.sh
Что-то вроде:
#!/bin/bash
PATH=$PATH:/opt/rh/rh-python35/root/bin/
А теперь после перезагрузки, если сделаем
python3 --version
Это должно просто работать. Единственным исключением может быть автоматически созданный пользователь, такой как "jenkins", на сервере Jenkins, у которого нет оболочки. В этом случае можно было бы вручную добавить путь к $PATH
в сценариях.
Наконец, если вы используете sudo pip3
для установки пакетов, но он сообщает вам, что pip3 не может быть найден, возможно, у вас есть secure_path в / etc / sudoers. Проверка с помощью sudo visudo
должна подтвердить это. Чтобы временно использовать стандартный PATH при запуске команд, вы можете, например, сделать следующее:
sudo env "PATH=$PATH" pip3 --version
См. этот вопрос для подробнее.
ПРИМЕЧАНИЕ. Существует более новая версия Python 3.6 от Software Collections, но я бы не рекомендовал ее в настоящее время, потому что у меня были серьезные головные боли при попытке установить Pycurl. Для Python 3.5 это не проблема, потому что я только что сделал sudo yum install sclo-python35-python-pycurl
, который работал "из коробки".
person
Nagev
schedule
06.03.2017