Привет, Хабр! Меня зовут Дмитрий Алексеев, я Data Scientist и являюсь участником профессионального сообщества NTA. Сегодня расскажу как использовать python и Linux «в связке», и как это поможет облегчить вам жизнь.
Операционная система Linux получила большую популярность среди админов и разработчиков благодаря ряду преимуществ таким, как бесплатное распространение, наличие открытого исходного кода, низкие требования к вычислительным ресурсам.
Python интерпретатор предустановлен в большинстве дистрибутивов Linux. Согласно рейтингу TIOBE на текущий момент самым упоминаемым в поисковых запросах языком программирования является python. Python обладает низким порогом входа, но имеет большой спектр возможностей для применения.
Использование python и Linux «в связке» может сильно облегчить вам жизнь. Я расскажу о том, как настроить python в Linux под нужды своего проекта.
КАК ЗАПУСТИТЬ PYTHON СКРИПТ НА VDS (ХОСТИНГ) С OS UBUNTU/DEBIAN? ЗАПУСК TELEGRAM БОТА
Определение виртуальной среды
Виртуальная окружение (или виртуальная среда) — это изолированная среда для проекта. Это «песочница», в рамках которой запускается приложение со своими версиями библиотек, обновление и изменение которых не затронет другие приложения, использующие те же библиотеки. Тем самым использование виртуальных сред позволяет избежать конфликтов версий.
Виртуальное окружение со всеми необходимыми настройками можно «передавать» вместе с вашим приложением. Так другому разработчику будет проще работать с вашим проектом.
Также библиотеки, которые необходимы только в одном проекте, можно подгрузить в виртуальное окружение и тем самым не засорять глобальное окружение.
Проверка версии Python
Как уже говорилось ранее, python предустановлен в большинстве дистрибутивов Linux. Я использовал версию Ubuntu 20.04.
Проверить текущую версию python можно с помощью команды: python3 -V.
Обновление пакетов
Вначале рассмотрим работу с python библиотеками в Linux.
Advanced Package Tool (apt) – это пакетный менеджер, позволяющий производить различные манипуляции с пакетами: устанавливать, удалять, обновлять, искать, загружать без установки. При этом все зависимости будут разрешаться автоматически.
Пакет – это архив, в котором содержатся бинарные и конфигурационные файлы, информация о том, куда их разместить в файловой системе и список действий по установке. В Linux python библиотеки являются пакетами.
В Linux есть список репозиториев, из которых происходит установка пакетов. Список хранится в текстовом файле /etc/apt/sources.list, а также в директории /etc/apt/sources.list.d/. При выполнении команды apt update, apt обращается к списку репозиториев и из каждого репозитория в списке получает информацию о пакетах, находящихся в нем. Вся эта информация сохраняется в операционной системе.
Python в Kali Linux — 3 способа КАК написать программу
Если выходит новая версия библиотеки, то apt не узнает об этом, пока не будет обновлена информация в репозиториях. Поэтому, если установить пакет, предварительно не выполнив обновление, то будет установлена та версия пакета, информация о которой хранится в системе в данный момент.
Для обновления пакетов необходимо выполнить следующие две команды.
Первая команда: sudo apt update.
Вторая команда: sudo apt -y upgrade.
Флаг -y в команде обозначает автоматическое подтверждение запросов на установку.
Установка пакетов venv
Для работы с виртуальным окружением в Linux нужно установить пакет venv с помощью следующей команды: sudo apt install python3-venv.
Создание виртуальной среды в Linux
Создать виртуальное окружение можно командой python3 -m venv my_venv.
My_venv – название виртуального окружения.
Приведенная выше команда создает каталог с именем «my_venv» (а также родительские каталоги, которые ещё не существуют), содержащий менеджер пакетов pip, интерпретатор, скрипты и библиотеки.
С помощью команды ls -la можно увидеть файлы в текущей директории.
Если вы хотите создать папку с окружением в конкретной директории, то вместо названия окружения нужно указать путь к папке. Например, python3 -m venv ~/my_venv.
Далее перейду в созданный каталог и посмотрю содержимое созданной папки.
Файл pyvenv.cfg содержит ключ, который будет указывать на ту версию Python, для которой запущена эта команда.
Каталог bin содержит копию/символическую ссылку двоичных файлов Python.
Каталог include включает в себя С-заголовки, компилирующие пакеты Python.
В каталог share входит python wheels. Python wheels — это формат готовых пакетов для Python, который помогает ускорить разработку программного обеспечения за счет сокращения количества операций компиляции.
Каталог lib в виртуальной среде имеет такую же структуру, как каталог lib в глобальном окружении. И содержит папку site-packages, в которую устанавливаются библиотеки.
Активация виртуальной среды
Виртуальное окружение создано. Для начала работы с окружением нужно его активировать.
Чтобы начать использовать эту виртуальную среду, вам необходимо активировать ее, запустив скрипт под названием activate:
После активации строка консоли будет иметь префикс с именем среды.
Можно проверить версию python.
А также посмотреть список установленных в окружении библиотек.
Установим библиотеку внутри виртуальной среды
Попробую установить библиотеку в окружение.
После активации все библиотеки будут устанавливаться в данное виртуальное окружение.
Чтобы проверить как установилась библиотека, можно попробовать импортировать её.
Если при импорте ошибок не было, значит установка библиотеки прошла успешно.
Совместное использование
Если вы хотите, чтобы другие могли на своих компьютерах запустить код вашего проекта, то помимо кода им необходимо иметь те же версии библиотек, что и у вас.
Для этого создадам файл, в котором будут прописаны все необходимые библиотеки и их версии.
Выполню следующую команду:
Файл requirements.txt содержит все библиотеки (с указанием их версий), которые установлены в данном окружении.
Установить все эти библиотеки можно выполнив одну команду в терминале: pip install -r requirements.txt.
После успешной установки библиотек другой человек сможет запустить ваш проект на своем компьютере.
Деактивация
Чтобы выйти из виртуального окружения, необходимо ввести команду deactivate.
Заключение
В публикации я рассмотрел тему виртуальных окружений в Linux. Материал позволит вам более осознанно подходить к процессу разработки и облегчит поддержку ваших проектов. Остались вопросы, буду рад ответить на них в комментариях.
- Python
- Разработка под Linux
Источник: habr.com
Установка Python 3 и настройка среды программирования на сервере Ubuntu 18.04
Python — гибкий и универсальный язык программирования, который можно использовать для разнообразных задач. Особенно полезен для создания скриптов, автоматизации, анализа данных, машинного обучения и разработки серверных компонентов приложений.
Разработчики выпустили первую версию языка Python в 1991 году с целью создать интересный язык программирования и назвали его в честь британской комедийной группы Monty Python. Python легко настраивать, и с его помощью можно создавать относительно простой код с немедленным получением уведомлений об ошибках. Это отличный выбор как для начинающих, так и для опытных разработчиков. Python 3 — самая последняя версия этого языка, которая считается будущим Python.
В этом обучающем модуле вы научитесь настраивать на сервере Ubuntu 18.04 среду программирования Python 3. Программирование на сревере дает много преимуществ и обеспечивает поддержку совместной работы над проектами разработки. Общие принципы этого обучающего модуля относятся к любым дистрибутивам Debian Linux.
Предварительные требования
Для выполнения этого обучающего руководства у вас должен быть пользователь без прав root с привилегиями sudo на сервере Ubuntu 18.04. Чтобы выполнить необходимую первоначальную настройку, воспользуйтесь нашим руководством по ручной начальной настройке сервера или запустите наш автоматизированный скрипт.
Если вы еще не знакомы со средой терминалой, вам будет полезна статья «Введение в терминалы Linux».
После настройки сервера и пользователя вы можете продолжить.
Шаг 1 — Настройка Python 3
Ubuntu 18.04 и другие версии Debian Linux поставляются с предустановленными средами программирования Python 3 и Python 2. Чтобы убедиться в обновлении версий, мы выполним обновление системы с помощью команды apt для работы с инструментом Ubuntu Advanced Packaging Tool:
Флаг -y показывает, что мы соглашаемся установить все элементы. В зависимости от вашей версии Linux вам может понадобиться подтвердить выбор в дополнительныхх диалогах по мере установки обновлений.
После завершения этой процедуры мы можем проверить установленную в системе версию Python 3 с помощью следующей команды:
На экране терминала будет выведена страница результатов, где вы сможете увидеть номер версии. Хотя номер версии может различаться, результат будет выглядеть примерно так:
OutputPython 3.6.7
Для управления программными пакетами Python мы установим инструмент pip, предназначенный для установки и управления пакетами программирования, которые мы можем захотеть использовать в наших проектах разработки. Дополнительную информацию о модулях и пакетах, которые можно установить с помощью pip, можно найти в документе «Импортирование модулей в Python 3».
Пакеты Python можно установить с помощью следующей команды:
Здесь package_name может относиться к любому пакету или любой библиотеке Python, в том числе Django для веб-разработки или NumPy для научных вычислений. Если вы захотите установить NumPy, вы можете использовать команду pip3 install numpy .
Можжно установить несколько дополнительных пакетов и средств разработки, чтобы получить надежную основу для нашей среды программирования:
После настройки Python и установки pip и других инструментов мы можем настроить виртуальную среду для наших проектов разработки.
Шаг 2 — Настройка виртуальной среды
Виртуальные среды позволяют выделять на сервере изолированную область для проектов Python. Благодаря этому каждый из ваших проектов может иметь собственный набор зависимостей, которые не помешают функционированию других ваших проектов.
Настройка среды программирования обеспечивает нам дополнительный контроль над нашими проектами Python и над обработкой разных версий пакетов. Это особенно важно при работе с пакетами сторонних разработчиков.
Вы можете настроить любое желаемое количество сред программирования Python. Каждая среда представляет собой каталог или папку на сервере, содержащую несколько скриптов, обеспечивающих ее работу.
Хотя существует несколько способов создания среды программирования в Python, мы используем модуль venv, входящий в состав стандартной библиотеки Python 3. Для установки venv введите следующую команду:
С этим модулем мы готовым приступить к созданию сред. Вначале выберем каталог, где мы хотим разместить наши среды программирования Python, или создадим такой каталог с помощью команды mkdir :
Для создания среды перейдите в каталог, где вы хотите разместить среды, и введите следующую команду:
Команда pyvenv настраивает новый каталог, содержащий несколько элементов, которые мы можем просмотреть с помощью команды ls :
Outputbin include lib lib64 pyvenv.cfg share
Совместная работа этих файлов обеспечивает изоляцию ваших проектов в более широком контексте вашего локального компьютера, так что системные файлы и файлы проекта не смешиваются. Будет очень полезно использовать контроль версий и обеспечить каждому из ваших проектов доступ к конкретным пакетам, которые ему необходимы. Python Wheels — это формат готовых пакетов для Python, помогающий ускорить разработку программного обеспечения за счет сокращения количества операций компиляции. Он находится в каталоге share в Ubuntu 18.04.
Чтобы использовать эту среду, ее нужно активировать. Для этого введите следующую команду, вызывающую скрипт activate:
В командной строке теперь будет отображаться имя вашей среды, в данном случае my_env . В зависимости от используемой версии Debian Linux префикс может выглядеть несколько иначе, однако называние вашей среды в скобках — это первое, что вы увидите в строке:
Префикс сообщает нам, что среда my_env активна, и что при создании программ они будут использовать настройки и пакеты этой конкретной среды.
Примечание. В виртуальной среде вы можете при желании использовать команду python вместо python3 и команду pip вместо pip3 . Если вы используете Python 3 на компьютере вне виртуальной среды, вы можете использовать только команды python3 и pip3 .
После выполнения этих шагов ваша виртуальная среда готова к использованию.
Шаг 3 — Создание программы «Hello, World»
Теперь мы настроили нашу виртуальную среду и готовы создать традиционную программу «Hello, World!» Это позволит нам протестировать нашу среду и познакомиться с Python поближе, если мы еще не сделали этого.
Для этого мы откроем текстовый редактор командной строки (например, nano) и создадим новый файл:
Когда текстовый файл откроется в окне терминала, мы введем нашу программу:
print(«Hello, World!»)
Для выхода из nano нажмите клавиши CTRL и X , а когда система предложит вам сохранить файл, нажмите клавишу y .
После выхода из nano и возврата в оболочку мы запустим программу:
Программа hello.py , которую вы только что создали, выведет на вашем терминале следующее:
OutputHello, World!
Для выхода из среды просто введите команду deactivate , и вы вернетесь в исходный каталог.
Заключение
Поздравляем! Вы настроили среду программирования Python 3 на своем сервере Debian Linux можете начинать проект по программированию!
Если вы используете локальный компьютер, а не сервер, воспользуйтесь обучающем модулем «Установка и настройка локальной среды программирования для Python 3» для вашей операционной системы.
Ваш сервер готов к разработке программного обеспечения. Дополнительную информацию о программировании на Python вы можете узнать из нашей бесплатной электронной книги «Программирование на Python 3» или в обучающих модулях по проектам программирования.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Источник: www.digitalocean.com
Как запустить python программу в линуксе
Я, как настоящий старовер, решил построить «data-pipeline» без коннекторов и DAG-менеджеров. Положив два перста на мышку, началась упорная работа. Разобрался с API рекламных систем, установил драйвер bigquery, залил первую таблицу в датасет. Победа была близка, осталось всё автоматизировать. Я начал разворачивать Airflow, а потом проснулся и вспомнил про cron.
Вспомнив про ранее купленный на лучшемгосподихостинге бегете VPS, куда я деплоил свой tf-idf кластеризатор. Было решено залить скрипт на сервер и настроить его запуск на 6 утра ежедневно.
Cron — это демон, а демон — это программа работающая в фоновом режиме. Ну а если вы программировали на Python — вам должны быть знакомы процессы-демоны. Запуск Cron-задания — это легко, но только в случаях когда мы говорим об выполнении php и bash скриптов. С Python всё иначе.
Устанавливаем Python на сервер
Выполняем, указные команды на примере Ubuntu.
sudo apt update sudo apt install python3.8 sudo apt install -y python3-pip
Проверяем успешность установки командой python3.
Создаем виртуальное окружение virtalenv
Следующий шаг — изолировать наш проект в отдельное виртуальное окружение, куда мы будем устанавливать нужные нам библиотеки.
pip3 install virtualenv # устанавливаем библиотеку cd /home/iakulshin # идем в папку вашего пользователя, тут на ваше усмотрение mkdir pipeline # создаем папку проекта cd /pipeline # переходим в папку virtualenv -p python3 venv # создаем виртуальное окружение, важно что мы устаналиваем с параметром -p, а то получим python 2.7 source venv/bin/activate # активируем
Теперь мы видим рядом в консоли перед строкой приписку (venv) — это значит, что мы в виртуальном окружении.
Запуск Python-скрипта с помощью Сron
Давай потестируем то, что у нас получилось на маленьком скрипте, который будет писать в файл дату и время его активации. Таким образом мы проверим как работает cron. Тестовый скрипт, который мы положим в корень папки проекта, у меня это / home / iakulshin / pipeline, заливаем через файловый менеджер filezilla и прочие, если вы хардкорный девопс-дата-инженер удачи вам с nano. Заливаем скрипт указанный ниже в нашу папку.
from datetime import datetime with open(‘test.txt’, ‘a+’, encoding=’utf-8′) as file: file.write(datetime.today().strftime(‘%Y-%m-%d-%H-%M-%S’) + ‘n’)
Давайте попробуем создать cron задание для тестового запуска. В целом нам будут нужны 2 команды:
crontab -l # выводит список текущих заданий crontab -e # открывает файл заданий crontab -r # удаляет файл задания Пишем в консоль crontab -e
Появлеятся файлик с крон задачами в редакторе nano. Наша задача установить задание, которое будет запускать наш скрипт каждую минуту.
* * * * * cd /home/iakulshin/pipeline /home/iakulshin/pipeline/venv/bin/python3 test.py [минута] [час] [день] [месяц] [день недели] [Переходим в папку] [ — означает «и»] [с помощью интерпретатора python3 запускаем файл test.py]
Наконец, в файлике test.txt каждую минуту появляется текущая дата, учения завершены, теперь рассмотрим возможные проблемы и способы их устранения.
Как понять что Cron срабатывает?
Чтобы удостовериться, что cron-таск отрабатывает, нам необходимо добавить задачу и обратиться к логам сервера, для этого идем в консоль и пишем следующую команду:
tail /var/log/syslog # получаем «хвост», последние 10 строк лог-файла
В нем вы увидите следующие записи:
Это означает, что cron срабатывает и воспроизводит команду, которую вы указали после звездочек. Но что делать, если python-скрипт всё еще не работает?
Cron срабатывает но Python-скрипт не выполняется
Самая типичная проблема, которая связана с «холостым» крон-таском — это недоступность библиотек, неверный выбор virtual env и версии python. Способ выбранный выше — это способ к которому я пришел спустя десяток часов поисков и изучения stackoverflow. Что нужно проверить для успешного запуска скрипта:
Возьмите команду, которую собирались добавь в крон и запустите её, это поможет словить ошибки связанные с недоступностью библиотек. В моем случае Скрипт не видел импортируемый файл, это я вылечил добавлением папки в системный путь. Добавляем в скрипты следующий код:
#!/home/iakulshin/bq_uploader/venv/bin/python import sys sys.path.insert(1, ‘/home/iakulshin/bq_uploader/’) # Путь до вашей папки со скриптом
Если скрипт запускается по прямой команде из консоли, но cron всё еще не выполняется, то ошибка 100% в том, что ваш скрипт запускается не из под virtualenv или вы запускаете скрипт из под python не подходящей версии, поэтому проверяем следующее:
- Мы перешли в папку со скриптом командой cd
- Мы обратились к интерпретатору python3 находящемуся в папке с виртуальным окружением нашего проекта.
В целом данный гайд должен помочь вам разобраться с запуском Python скриптов с помощью Cron. Однако, я оставлю ссылки на полезные треды в stackoverflow, где представлены дополнительные способы решения этой проблемы.
Источник: akulshin.ru