Использование
Установка новой версии Python
Сначала посмотрим, какие версии Python может установить:
Список довольно длинный, поэтому я его подсократил. Обычно вас будут
интересовать такие версии, как или — это версии самой
распространённой реализации интерпретатора CPython. Но если
вам нужна экзотика, то умеет устанавливать любые сорта интерпретаторов
Python (, , ,
, и т.д.). Для вас ведь не стало
новостью, что существует много разных реализаций интерпретатора Python?
Установим CPython 3.8.2:
Через пару минут ожидания ваш новоиспечённый Python будет готов.
Можно сразу же назначить эту версию глобальной:
Давайте в целях демонстрации установим ещё парочку интерпретаторов:
Получим список установленных версий интерпретатора:
Кстати, если нужно, то можно делать активными сразу несколько
версий одновременно:
Теперь вывод версий покажет следующее:
А работать это будет вот таким образом:
Грубо говоря, та версия, которая указана первой (3.8.2),
имеет приоритет и занимает все нужные ей имена. Следующие версии (2.7.18)
могут занять любые оставшиеся свободные имена (в данном случае, это только имя
).
А файл глобальной версии на данный момент имеет вот
такое содержимое:
Локальная версия
Давайте создадим директорию и войдём в неё:
Представим, что в этой директории мы будем разрабатывать некий
проект, на котором мы хотим опробовать фишки нового Python 3.9.
Сообщим об этом :
В директории появился файл со следующим содержимым:
На данный момент список версий показывает следующее (удобно использовать
эту команду, чтобы понять какую версию и почему активирует):
Изменения немедленно вступили в силу:
Но эта конфигурация никак не влияет на работу вне директории проекта:
Как и в случае с глобальной конфигурацией, можно локально активировать
сразу несколько версий интерпретатора.
Установим IPython
Часто бывает нужно установить какой-нибудь пакет так, чтобы он тоже
стал доступен из командной строки. Допустим, что нам нужно установить
— более удобную версию REPL Python.
Сделаем это:
Запустим:
Программа сразу доступна, благодаря тому, что очень умный и
создал новый файл-прослойку (shim) автоматически:
Вне директории с проектом будет недоступен, ведь он же установлен
в локальный интерпретатор , а снаружи активирован другой
интерпретатор — можете проверить самостоятельно.
Возникают ситуации, когда по какой-то причине прослойка не создалась
или с ней случилось что-то ещё, например, удалилась:
Не беда! Можно попросить пересоздать их все заново:
И всё работает снова:
Можно вообще добавить команду в свой (или аналог),
чтобы при запуске шелла гарантированно иметь рабочие файлы-прослойки (shims).
Сборка Python 3.9.2 в Linux из исходников
Этот способ может показаться немного сложнее предыдущего, но зато с помощью него можно установить самую свежую версию Python, которая доступна на официальном сайте. Процесс установки опробован на ОС Ubuntu 20, также его можно применять и на Debian 10.
sudo apt update
На следующем шаге, необходимо инсталлировать необходимые нам для работы пакеты:
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget
Затем перейдем в папку /tmp и скачаем в нее архив с официального сайта Python*:
cd /tmp/ wget https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz
*Примечание: можно использовать как команду wget, так и команду curl.
Cейчас распакуем этот архив во временную папку и затем его сразу же и удалим:
tar -xf Python-3.9.2.tgz rm Python-Python-3.9.2.tgz
На следующем этапе, запустим команду, которая выполнит подготовку к установке (enable-optimization — служит для оптимизации двоичного файла Python). Исполнение данной команды займет некоторое время:
cd Python-3.9.2 ./configure --enable-optimizations
Для того, чтобы начать процесс сборки, выполним команду*:
make -j 2
*Примечание: цифра 2 указывает на количество ядер процессора. Узнать эти данные можно с помощью команды nproc.
Если в процессе сборки будут замечены проблемы, то необходимо запустить сборку в однопоточном режиме, следующим образом (без параметров -j 2), просто выполнив команду make.
Теперь установим Python 3.9.2 с помощью команды altinstall, последняя версия Python инсталлируется наряду со старыми версиями, т.е. у вас в ОС будет несколько версий языка Python. Если же вы используете команду install, то новая версия питон будет установлена поверх старых (а все старые версии будут удалены).
sudo make altinstall
*Процесс инсталляции Python путем сборки пакета из исходников может занять длительное время.
В результате, в нашей ОС Ubuntu 20 (Debian 10) будет установлено сразу несколько версий языка Python, у нас конкретно — это версии 3.9.2 и 3.8.5, проверить можно с помощью команд:
python3.9 --version python3.8 --version
Установка на Linux (из исходников)
Установка через исходники не так сложна, как кажется изначально. Она состоит из 4 шагов.
Шаг 1Прежде чем начать устанавливать Python 3.8, необходимо установить необходимые библиотеки для компиляции Python следующими командами:
Шаг 2 Скачать архив Python 3.8 в любое место (например в /opt):
Доступные версии можно выбрать тут.
Разархивируем скачанный архив:
Шаг 3 Осталось скомпилировать исходники. Для этого выполним команды:
altinstall используется для предотвращения замены бинарного файла python в папке /usr/bin
Шаг 4 Проверить установку можно командой:
Чтобы скачанный архив Python-3.8.1.tgz не занимал лишнее место, его можно удалить:
Вариант 2 — установить Python 3.10 в Ubuntu 20.04 | 18.04 из исходного кода.
Другой альтернативой установке Python 3.10 в вашей системе Ubuntu 20.04 | 18.04 является его сборка из исходного кода. При использовании этого метода установки вам будет гарантирована последняя версия Python, хотя вы не сможете получать постоянные обновления, исправления ошибок и обновления безопасности через диспетчер пакетов APT .
Установите необходимые зависимости для сборки Python 3.10 из исходного кода.
Теперь продолжите и загрузите последнюю версию Python с официальной страницы выпуска Python . Или скопируйте ссылку для загрузки gzip-архиватора Python 3.10 и используйте Wget, чтобы вытащить его, как показано ниже.
Когда этот файл будет загружен, продолжайте и извлекайте его.
Теперь перейдите в извлеченный каталог и запустите сценарий, чтобы проверить необходимые зависимости. Флаг — оптимизирует двоичный файл, выполняя несколько тестов..
Вывод:
Теперь запустите процесс сборки Python 3.10, как показано ниже.
Помните, что аргумент -j должен соответствовать количеству ядер в вашей системе, чтобы процесс был быстрее. Проверьте количество ядер в вашей системе с помощью команды . В этом случае у меня в системе 2 ядра.
Пример вывода:
Завершив процесс сборки, введите команду make ниже, чтобы установить Python 3.10 в Ubuntu 20.04 | 18.04.
Здесь используется вместо того, чтобы сохранить двоичный путь Python по умолчанию в /usr/bin/python .
Пример вывода:
Проверьте вашу установку.
Обновление Python
Процесс обновления описан на примере актуальной на момент написания статьи версии Python 3.9.1. На странице загрузок Python всегда можно посмотреть номер свежего релиза и заменить ссылки на скачивание и распаковку архива в приведенных ниже командах.
sudo systemctl stop home-assistant@homeassistant.service
Установим нужные для сборки из исходников пакеты:
sudo apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libxslt-dev libxml2-dev libjpeg-dev zlib1g-dev
Скачаем и распакуем архив с Python 3.9.1:
wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz tar xzvf Python-3.9.1.tgz cd Python-3.9.1
Соберем его из исходников и запустим установку:
./configure --enable-optimizations make -j 4 sudo make install
Процесс сборки занимает около 12 минут на Raspberry Pi 4, поэтому придется запастись терпением.
После завершения установки можно проверить, что Python действительно обновился путем выполнения двух команд:
python3 --version pip3 --version
И если в консоли появится такие ответы, то процесс обновления прошел успешно:
Теперь обновим менеджер пакетов pip:
sudo /srv/homeassistant/bin/python3.9 -m pip install --upgrade pip sudo python3.9 -m pip install --upgrade pip
В случае если после обновления Python при запуске Home Assistant появится ошибка с доступностью библиотеки libffi.so.7 можно создать симлинк с libffi.so.7 на нее:
sudo ln -s /usr/lib/arm-linux-gnueabihf/libffi.so.6 /usr/lib/arm-linux-gnueabihf/libffi.so.7
Если симлинк не создается, то значит в вашей системе libffi.so.6 находится по другому пути. Найдите корректный путь через поиск по названиям файлов:
find /usr/lib -name "libffi.so*"
Переключить версию python в Unix/Linux
Сейчас по умолчанию, во многих Unix/Linux ОС используется питон 2.6. Чтобы проверить какая версия питона используется в системе, выполните:
$ python -V Python 2.6
Выполним установку python:
Так же, посмотрим:
$ ls -al /usr/local/bin/python*
Получаем:
lrwxrwxrwx. 1 root root 7 Apr 11 10:38 /usr/local/bin/python -> python2 lrwxrwxrwx. 1 root root 9 Apr 11 10:38 /usr/local/bin/python2 -> python2.7 -rwxr-xr-x. 1 root root 6294753 Apr 11 10:37 /usr/local/bin/python2.7 -rwxr-xr-x. 1 root root 1687 Apr 11 10:38 /usr/local/bin/python2.7-config lrwxrwxrwx. 1 root root 16 Apr 11 10:38 /usr/local/bin/python2-config -> python2.7-config lrwxrwxrwx. 1 root root 9 Apr 11 11:10 /usr/local/bin/python3 -> python3.6 -rwxr-xr-x. 2 root root 9961651 Apr 11 11:08 /usr/local/bin/python3.6 lrwxrwxrwx. 1 root root 17 Apr 11 11:10 /usr/local/bin/python3.6-config -> python3.6m-config -rwxr-xr-x. 2 root root 9961651 Apr 11 11:08 /usr/local/bin/python3.6m -rwxr-xr-x. 1 root root 3083 Apr 11 11:10 /usr/local/bin/python3.6m-config lrwxrwxrwx. 1 root root 16 Apr 11 11:10 /usr/local/bin/python3-config -> python3.6-config lrwxrwxrwx. 1 root root 14 Apr 11 10:38 /usr/local/bin/python-config -> python2-config
И так, чтобы переключить версию питона, я буду использовать несколько методов.
-===СПОСОБ 1 — использование алиаса===-
Один из самых простых способов — это использовать алиасы. Открываем файл:
# vim ~/.bashrc
И, прописываем сам алиас на нужную версию питона:
alias python='/usr/local/bin/python3.6'
Чтобы изменения вступили в силу, выполняем:
$ . ~/.bashrc
После этого, можно проверять версию:
$ python --version Python 3.6.1
Видно что все отлично работает.
-===СПОСОБ 2 — использование alternatives===-
Чтобы изменить версию python глобально, я воспользуюсь alternatives утилитой:
# alternatives --list | grep -i python
Если вывода не будет, — это будет означать, что python alternative еще не сконфигурирована. Чтобы это сделать, выполните ( взято в качестве примера):
# alternatives --install /usr/bin/python python /usr/local/bin/python3.6 2 # alternatives --install /usr/bin/python python /usr/local/bin/python2.7 1
Вышеупомянутые команды будут указывать команде alternatives для создания соответствующих символических ссылок, которые будут использоваться при выполнении команды python. Я назначил python3.6 более высокий приоритет ( цифра 2), — это означает, что если не выбрана альтернатива для python, то по умолчанию будет использоваться python3.6. После выполнения вышеуказанных команд ваша версия python должна измениться на python3.6 из-за ее более высокого приоритета.
Проверяем:
# python -V Python 3.6.1
Для переключения между вышеперечисленными версиями python теперь достаточно просто:
# alternatives --config python
Чтобы удалить питон с alternatives, используем:
# update-alternatives --remove python /usr/local/bin/python3.6
Как-то так! На этому у меня все, статья «Переключить версию python в Unix/Linux» завершена.
Как это работает
работает благодаря манипуляциям над переменной окружения .
Эта переменная содержит в себе список директорий, в которых ОС будет искать
исполняемые файлы, вызванные без указания полного пути. Именно
благодаря этой переменной мы можем в терминале вместо вызывать
просто . Когда мы набираем в терминале имя программы (),
ОС перебирает директории из слева направо, пока в одной
из них (в данном примере ) не найдёт программу с именем ,
которую и запустит. Поиск прекращается после первого совпадения.
Команда , которую мы добавили в конфиг шелла ( или аналог)
добавляет директории в самое начало переменной .
Зачем это нужно? создаёт небольшие исполняемые файлы,
так называемые файлы-прослойки (shims), для всех команд,
которыми он собирается управлять, например, , , и так далее.
Эти файлы-прослойки должны попасть в прежде самих управляемых программ
и «затенить» системные , и так далее.
Эти файлы-прослойки в конечном счёте просто вызывают сам
с нужными аргументами.
Таким образом перехватывает обращения к некоторым именам,
и анализируя поступившую к нему информацию,
принимает решение о том, какую именно версию Python нужно запустить.
При выборе версии принимает во внимание следующие факторы в
указанном порядке:
-
Переменная окружения , если указана.
В неё можно указать какую конкретно версию Python нужно использовать
в рамках текущего сеанса. Удобно, если вам по какой-то причине понадобится
сменить выбранную версию интерпретатора, например, в одном
из окон терминала. -
Локальная версия Python.
При помощи специального файла можно настроить
версию интерпретатора для определенного проекта. Захо́дите внутрь
директории (), и внезапно понимает, что нужно
сменить Python. Выхо́дите обратно — версия Python меняется на глобальную.
Это распространяется и на все поддиректории проекта —
рекурсивно ищет файл вверх по файловой системе,
пока не дойдёт до корня. -
Глобальная версия Python.
В файле записана глобальная версия Python, которая
будет использоваться по умолчанию, если не сконфигурирована локальная
версия.
Вам вряд ли придётся вручную трогать эти файлы, потому что у есть
удобные команды ( и ),
чтобы ими управлять, но знать о файлах всё равно полезно.
Установка Pyenv в Linux
1. Сначала установите все необходимые пакеты для установки разных версий Python из исходного кода, используя приведенные ниже команды для вашего дистрибутива Linux.
В Debian/Ubuntu/Linux Mint
$ sudo apt install curl git-core gcc make zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libssl-dev
В CentOS/RHEL
# yum -y install epel-release # yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel
В Fedora 22+
# yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel
2. Затем возьмите последнее дерево исходного кода pyenv из репозитория Github и установите его в $HOME/.pyenv, используя следующую команду.
$ git clone https://github.com/pyenv/pyenv.git $HOME/.pyenv
3. Теперь вам нужно установить переменную среды PYENV_ROOT, чтобы указать путь, по которому вы установили pyenv и экспортировать его. Затем добавьте $PYENV_ROOT/bin в PATH для запуска утилиты командной строки pyenv.
Вам также необходимо включить прокладки, а также автодополнение, добавив pyenv init в свою оболочку. Сделайте все это в своем стартовом файле $HOME /.bashrc bash, как показано ниже.
$ vim $HOME/.bashrc
Скопируйте и вставьте следующие строки в конце этого файла.
## pyenv configs export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi
4. После того, как вы внесли вышеуказанные изменения, вы можете либо перезагрузить файл $HOME/.bashrc, либо перезапустить оболочку, как показано ниже.
$ source $HOME/.bashrc или $ exec "$SHELL"
Пример использования pexpect¶
Пример использования pexpect для подключения к оборудованию и передачи
команды show (файл 1_pexpect.py):
import pexpect import re from pprint import pprint def send_show_command(ip, username, password, enable, commands, prompt="#"): with pexpect.spawn(f"ssh {username}@{ip}", timeout=10, encoding="utf-8") as ssh ssh.expect("assword") ssh.sendline(password) enable_status = ssh.expect() if enable_status == ssh.sendline("enable") ssh.expect("assword") ssh.sendline(enable) ssh.expect(prompt) ssh.sendline("terminal length 0") ssh.expect(prompt) result = {} for command in commands ssh.sendline(command) match = ssh.expect() if match == 1 print( f"Символ {prompt} не найден в выводе. Полученный вывод записан в словарь" ) if match == 2 print("Соединение разорвано со стороны сервера") return result else output = ssh.before resultcommand = output.replace("\r\n", "\n") return result if __name__ == "__main__" devices = "192.168.100.1", "192.168.100.2", "192.168.100.3" commands = "sh clock", "sh int desc" for ip in devices result = send_show_command(ip, "cisco", "cisco", "cisco", commands) pprint(result, width=120)
Эта часть функции отвечает за переход в режим enable:
enable_status = ssh.expect() if enable_status == ssh.sendline("enable") ssh.expect("assword") ssh.sendline(enable) ssh.expect(prompt)
Если возвращает индекс 0, значит при подключении не было
автоматического перехода в режим enable и его надо выполнить.
Если возвращается индекс 1 — значит мы уже находимся в режиме enable, например, потому что
на оборудовании настроено privilege 15.
Еще один интересный момент в функции:
for command in commands ssh.sendline(command) match = ssh.expect() if match == 1 print( f"Символ {prompt} не найден в выводе. Полученный вывод записан в словарь" ) if match == 2 print("Соединение разорвано со стороны сервера") return result else output = ssh.before resultcommand = output.replace("\r\n", "\n") return result
Тут по очереди отправляются команды и expect ждет три варианта: приглашение, таймаут или EOF.
Если метод expect не дождался , будет возвращено значение 1 и в этом случае выводится сообщение,
что символ не найден. При этом, и когда совпадение найдено и когда был таймаут, полученный вывод
записывается в словарь. Таким образом можно увидеть, что было получено с устройства, даже
если приглашение не найдено.
Вывод при запуске скрипта:
Установка pexpect в Unix/Linux
Я приведу несколкьо примеров по установке данного ПО.
-=== СПОСОБ 1 — Использование tar рахива ===-
Скачиваем pexpect архив:
# cd /usr/local/src && wget https://netcologne.dl.sourceforge.net/project/pexpect/pexpect/Release%202.3/pexpect-2.3.tar.gz
Распакуем его,и, перейдем в папку:
# tar zxf pexpect-current.tgz && cd pexpect-current
Запускаем установку:
# python setup.py install
Можно юзать!
-=== СПОСОБ 2 — Использования установщика PIP ===-
Для начала, установим PIP:
После чего, выполняем:
# pip install pexpect
Или:
# pip3 install pexpect
Установка закончена, используйте. Примеры покажу ниже.
Как установить PIP на Mac
Современные версии Mac идут с установленными Python и PIP. Так или иначе версия Python устаревает, а это не лучший вариант для серьёзного разработчика. Так что рекомендуется установить актуальные версии Python и PIP.
Если вы хотите использовать родную систему Python, но у вас нет доступного PIP, его можно установить следующей командой через терминал:
Если вы предпочитаете более свежие версии Python, используйте Homebrew. Следующие инструкции предполагают, что Homebrew уже установлен и готов к работе.
Установка Python с помощью Homebrew производится посредством одной команды:
Будет установлена последняя версия Python, в которую может входить PIP. Если после успешной установки пакет недоступен, необходимо выполнить перелинковку Python следующей командой:
Как установить PIP на Linux
Если у вас дистрибутив Linux с уже установленным на нем Python, то скорее всего возможно установить PIP, используя системный пакетный менеджер. Это более удачный способ, потому что системные версии Python не слишком хорошо работают со скриптом get-pip.py, используемым в Windows и Mac.
Advanced Package Tool (Python 2.x)
Advanced Package Tool (Python 3.x)
pacman Package Manager (Python 2.x)
pacman Package Manager (Python 3.x)
Yum Package Manager (Python 2.x)
Yum Package Manager (Python 3.x)
Dandified Yum (Python 2.x)
Dandified Yum (Python 3.x)
Zypper Package Manager (Python 2.x)
Zypper Package Manager (Python 3.x)
Скачать и установить Python 2.7.9
Чтобы установить Python из скачанного архива нужен компилятор
C
например
gcc
wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
—2021-01-11 12:17:43— https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
Resolving www.python.org (www.python.org)… 151.101.84.223, 2a04:4e42:14::223
Connecting to www.python.org (www.python.org)|151.101.84.223|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 16657930 (16M) [application/octet-stream]
Saving to: ‘Python-2.7.9.tgz’
Python-2.7.9.tgz 100% 15.89M 3.63MB/s in 4.4s
2021-01-11 12:17:48 (3.61 MB/s) — ‘Python-2.7.9.tgz’ saved [16657930/16657930]
Распаковать архив можно командой
tar xvzf Python-2.7.9.tgz
Затем нужно перейти в распакованную директорию и выполнить
configure make install
cd Python-2.7.9
./configure
make
sudo make install
Синтаксис и опции apt
Синтаксис команды apt очень простой и похож на другие команды Linux:
$ apt опции команда параметры_команды
Опции указывают общее поведение утилиты, команда — действие, которое надо выполнить, а в параметрах команды обычно передается имя пакета, с которым следует работать, например, установить или удалить. Вот основные опции утилиты:
- -v, —version — выводит версию утилиты;
- -h, —help — выводит справку по использованию утилиты;
- -y, —yes — автоматически отвечать «да» на все возникающие вопросы;
- —assume-no — автоматически отвечать «нет» на все возникающие вопросы;
- -d, —download-only — только скачать пакеты и больше ничего не делать;
- -f, —fix-broken — исправить недостающие зависимости;
- —no-download — ничего не загружать, использовать только пакеты из кэша;
- -s, —simulate — режим симуляции, никакие операции не выполняются, только выводится информация на экран;
- —allow-unauthenticated — позволяет установить пакеты, из репозиториев, для которых нет GPG подписи;
- —no-install-recommends — не устанавливать рекомендованные пакеты, по умолчанию будут установлены;
- -m, —ignore-missing — игнорировать пакеты, которые существует;
- -q, —quiet — выводить минимум информации, не показывать прогресс бар;
- -V, —verbose-versions — показывать полные версии обновленных пакетов;
- —only-upgrade — не устанавливать новые пакеты, только обновлять;
- —allow-downgrades — разрешить откатывать версию пакетов;
- —reinstall — переустановить пакет если он уже установлен;
А теперь давайте пройдёмся по командам apt, которые вы можете использовать:
- install — установить пакет;
- remove — удалить пакет, конфигурационные файлы, которые были изменены в вашей системе удалены не будут;
- purge — полностью удалить пакет, вместе со всеми его конфигурационными файлами;
- autoremove — очистить ненужные пакеты;
- autoclean — очистить кэш пакетов;
- update — обновить списки пакетов из репозиториев;
- upgrade — обновить версию пакета до последней, если пакет не указан будут обновлены все пакеты;
- full-upgrade — полное обновление системы, включая удаление несовместимых или больше ненужных пакетов;
- list — список установленных пакетов;
- search — поиск пакетов;
- show — посмотреть информацию о пакете;
- download — скачать пакет в текущую папку;
- edit-sources — открыть с настройками репозиториев в текстовом редакторе.
- source — скачать исходный код пакета в текущую папку;
- build-dep — установить зависимости необходимые для сборки выбранного пакета;
Дальше рассмотрим несколько примеров работы с apt, которые пригодятся как начинающим, так и более опытным пользователям.
Как удалить Python в Ubuntu
Если вам по какой-то причине необходимо удалить python с сервера ubuntu, то сделать это можно штатным образом через пакетный менеджер apt. Для того, чтобы узнать версию пакетов для удаления, можно вывести их список.
sudo dpkg -l | grep python
После этого, подставляя версию нужного пакета, удалить его:
sudo apt remove python3
Только будьте внимательны при удалении python из системы. Он очень много кем используется. При его удалении будет предложено удалить и все его зависимости. А это внушительный список пакетов, которые без пайтона не смогут работать.
К примеру, без пайтона не сможет работать netplan, с помощью которого настраивается сеть. Так что аккуратнее с удалением питона из системы.
Ошибки, которые могут возникнуть при установке
1. Zipimport.zipimporterror
Когда вы запускаете команду , можете столкнуться со следующей ошибкой:
Это значит, что нужно установить пакет с именем , так как он, возможно, вам не был нужен раньше.
Решение: Выполните следующую команду с правами sudo, чтобы установить отсутствующий пакет :
Затем повторите команду для завершения установки Python:
2. No module named ‘_ctypes’
Это ошибка появляется также при запуске команды :
Это значит, что нужно установить пакет с именем , так как он, возможно, вам не был нужен раньше.
Решение: Выполните следующую команду с правами sudo, чтобы установить отсутствующий пакет :
Затем повторите команду для завершения установки Python:
Особенности установки Python на CentOS
Для инсталляции Python на CentOS версии 7 необходимо использовать репозиторий epel (Extra Packages for Enterprise Linux) или же DNF (Dandified YUM, т.е. yum нового поколения) для CentOS 8.
Для способа с использованием DNF выполним следующие команды:
- Проверим обновления нашего диспетчера пакетов:
sudo dnf update -y
- Установим стабильную версию Python 3 из репозитория:
sudo dnf install python3 -y
- Проверим, какая точно версия Python у нас инсталлировалась:
python3 -v
- Чтобы установить инструментарий для разработчиков, выполним следующую команду:
sudo dnf -y groupinstall development
Если же вы будете использовать репозиторий epel, то следуйте простым инструкциям:
- Подключите репозиторий epel для начала работы:
yum install epel-release
- Затем установите Python (например, версии 3.6):
yum install python36
- Для проверки номера версии введите команду:
python -v
- Для отображения последней установленной в вашей ОС версии используйте команду:
python36 -v
Установка Pip
sudo apt update
sudo apt install python3-pip
pip3 —version
pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)
Про
pip
Библиотеки лежат в /home/andrei/.local/lib
ls -la /home/andrei/.local/lib
total 0
drwx—— 0 andrei andrei 512 Mar 20 16:41 .
drwx—— 0 andrei andrei 512 Mar 19 13:31 ..
drwx—— 0 andrei andrei 512 Mar 19 13:19 python2.7
drwx—— 0 andrei andrei 512 Mar 20 15:01 python3.5
Пример Make файла для установки рабочего окружения
.PHONY: preinstall-env
preinstall-env:
@sudo apt -y update
@sudo apt -y upgrade
@sudo apt-get install -y build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev libffi-dev \
wget llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \
liblzma-dev curl git
@curl https://pyenv.run | bash
# substitute for
# curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
@echo «# Pyenv Config» >> ~/.bashrc
@echo ‘export PYENV_ROOT=»$$HOME/.pyenv»‘ >> /home/$$(whoami)/.bashrc
@echo ‘export PATH=»$$PYENV_ROOT/bin:$$PATH»‘ >> /home/$$(whoami)/.bashrc
@echo ‘eval «$$(pyenv init —path)»‘ >> /home/$$(whoami)/.bashrc
@echo ‘eval «$$(pyenv virtualenv-init -)»‘ >> /home/$$(whoami)/.bashrc
В .bashrc будет прописано
# PyEnv Configuration
export PYENV_ROOT=»$HOME/.pyenv»
export PATH=»$PYENV_ROOT/bin:$PATH»
eval «$(pyenv init —path)»
eval «$(pyenv virtualenv-init -)»
Перезапустить shell можно выполнив
exec «$SHELL»
Запуск Python в Docker
Ну и в завершении статьи про Python в Ubuntu, покажу, как можно еще его запускать без локальной установки непосредственно в саму систему. Вы можете запустить питона в докере. Для этого просто выберите необходимую вам версию Python и запустите Docker контейнер с ней.
docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3 python script.py
В данном случае я быстро запустил свой скрипт в версии 3, используя контейнер python:3. Если мне то же самое нужно сделать во 2-й версии, то я просто использую другой контейнер.
docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:2 python script.py
Таким образом я могу запускать свой скрипт на любой версии python без необходимости его локальной установки. В приведенном примере контейнер будет автоматически остановлен и удален после выполнения скрипта. За это отвечает параметр —rm, который я указал.
Заключение
В этой статье мы рассказали нашим читателям об использовании языка программирования Python и подробно изложили два способа установки последней версии Python для ОС Linux (на Ubuntu 20, Debian 10, CentOS 7 и 8). Также дали основные понятия о работе с виртуальной средой.
Надеемся, что данный материал будет интересен, как начинающим программистам на Python, так и более опытным специалистам, которые планируют расширить свои познания в области программирования и настройки ОС. Специалисты компании FREEhost.UA всегда помогут вам с инсталляцией и настройкой различных программных решений для VPS.