Как настроить python в Linux под свой проект?
Привет, Хабр! Меня зовут Дмитрий Алексеев, я Data Scientist и являюсь участником профессионального сообщества NTA. Сегодня расскажу как использовать python и Linux «в связке», и как это поможет облегчить вам жизнь.

Операционная система Linux получила большую популярность среди админов и разработчиков благодаря ряду преимуществ таким, как бесплатное распространение, наличие открытого исходного кода, низкие требования к вычислительным ресурсам.
Python интерпретатор предустановлен в большинстве дистрибутивов Linux. Согласно рейтингу TIOBE на текущий момент самым упоминаемым в поисковых запросах языком программирования является python. Python обладает низким порогом входа, но имеет большой спектр возможностей для применения.
Использование python и Linux «в связке» может сильно облегчить вам жизнь. Я расскажу о том, как настроить python в Linux под нужды своего проекта.
Определение виртуальной среды
Виртуальная окружение (или виртуальная среда) — это изолированная среда для проекта. Это «песочница», в рамках которой запускается приложение со своими версиями библиотек, обновление и изменение которых не затронет другие приложения, использующие те же библиотеки. Тем самым использование виртуальных сред позволяет избежать конфликтов версий.
Виртуальное окружение со всеми необходимыми настройками можно «передавать» вместе с вашим приложением. Так другому разработчику будет проще работать с вашим проектом.
Также библиотеки, которые необходимы только в одном проекте, можно подгрузить в виртуальное окружение и тем самым не засорять глобальное окружение.
Проверка версии 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 обращается к списку репозиториев и из каждого репозитория в списке получает информацию о пакетах, находящихся в нем. Вся эта информация сохраняется в операционной системе.
Если выходит новая версия библиотеки, то 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
Python & Linux: Почему навык змееуста для админа — это мастхев. История о личном опыте
Это небольшая история о том, как лично мне помог всего лишь один инструмент в выходе на совершенно новый уровень, как специалиста.

Мотивация для развития
Наверное, многие из нас на парах мотивации садились читать какую-то книгу по интересной технологии, но ввиду отсутствия четкого понимания, зачем это понадобится забрасывали это дело. Да и зачастую техническая литература бывает жутко скучной. Эти два пункта в комбинации окончательно уничтожают желание изучать технологию.
Я не исключение, и первая попытка не увенчалась успехом.
На тот момент я уже работал полтора года дежурным linux админом, умел писать скрипты на Bash, в организации шел активный переход с оркестратора Puppet на Ansible.
В процессе перехода мне также перепадали тикеты на написание новых ролей. Здесь я почувствовал нехватку базового понимания программирования и знания основ Python.
Дальше появляется задача достаточно серьезного уровня — написать скрипт, для выгрузки и парсинга большого массива данных для автогенерируемого дашборда в Grafana. Он был написан на Bash-е, размером в ~350 строк. Выглядел он ужасно. Как его будет поддерживать другой специалист — непонятно. Мне было стыдно, но оно работало и помогало бизнесу.
Итак, я получил мотивацию.
Изучение Python
Мои глаза горели, руки не понимали, что делать, в книгах большое количество информации, а я хочу писать здесь и сейчас. Хочу показать всем, что мне не зря платят деньги.
Изучение началось с того, что я купил курс по Python: Basic за 5 000 рублей. Он состоял из следующих тем:
- Типы данных;
- Ветвление;
- Циклы;
- Работа с файлами;
- Модули и библиотеки;
- ООП;
- Исключения и немного инфы о работе с RESTful API.
Да, все темы были сжаты в рамках курса, но это была моя личная точка старта. Этой инфы за пять тысяч рублей мне хватило для того, чтобы научиться писать красивые скрипты и начать изучать программирование в стиле ООП. До этого я умел только в линейное программирование на уровне Bash скриптов.
Эта точка старта открыла огромное количество дверей. Я научился писать: модули для Ansible, большие скрипты для автоматизации действий завязанных с API интерфейсами, полезные AWS Lambda функции, которые помогают защищать наши проекты от DDoS атак, небольших чат ботов и все в таком духе.
Одна лишь мысль о том, что с помощью Python я могу «фактически всё», зажигала моё желание сделать что-то ещё. Я читал скрипты наших DevOps инженеров, просил их же о ревью кода, спрашивал очень много всего, что связано с питоном (казалось, что я уже всех достал), учился применять практики ООП, открыл для себя портал Codewars. Кстати, благодаря Codewars узнал достаточное большое методов для парсинга массивов данных и различных функций, всем рекомендую.
Ansible перестал для меня быть непонятной штукой, которую нужно 24\7 штудировать по документации, а фильтры jinja2 стали моим лучшим другом.
Ранее мой код выглядел так, словно его писали индусы за еду. Примера ради, вырезка кода, который получает id последнего полученного письма и удаляет его.
Python код за еду
mail = imaplib.IMAP4_SSL('imap.gmail.com') mail.login('mail@gmail.com', 'Psw') mail.select("inbox") result, data = mail.search(None, "ALL") ids = data[0] id_list = ids.split() latest_email_id = id_list[-1] result, data = mail.fetch(latest_email_id, "(RFC822)") raw_email = data[0][1] raw_email_string = raw_email.decode('utf-8') email_message = email.message_from_string(raw_email_string) mail.store(latest_email_id, '+FLAGS', '\\Deleted') mail.expunge()
Для примера вырезка из кода последних скриптов. Он генерирует список каких-то нужных данных из ответа на запрос к Elasticsearch и умеет писать prometheus like метрики в случае проблем:
Python код за еду и деньги
def comparison(targets, field, target): req_result = req(field=field, target=target) if req_result.status_code == 200: try: elc_json = req_result.json()['some']['key']['from_dict'] for item in elc_json: elastic_hosts.append(item["key"]) res = [x for x in targets if x not in elastic_hosts] for name in res: write_metric(hostname=name) except: write_metric(error_msg="Message", code=3) move_file() exit(1) else: write_metric(error_msg="Error message", code=4) move_file() exit(1) elastic_hosts.clear()
Все и без меня знают, но стоит еще раз упомянуть, что этот язык программирования обладает огромным количеством библиотек и может пригодиться буквально где угодно. Множество крупных проектов имеют готовые библиотеки для работы с их API.
Используешь Amazon? Вот тебе boto3. Используешь Cloudflare? Вот тебе библиотека cloudflare. Используешь Hetzner? Вот тебе hcloud.
Простой синтаксис дает возможность легко читать код и поддерживать его.
Возможность автоматизировать рутинные процессы — это отдельный вид блаженства.
Что мне это дало?
Во-первых, у меня появилось новое хобби, я по сей день изучаю Python, хоть и моих нынешних навыков хватает с головой для выполнения поставленных задач.
Во-вторых, расширился спектр задач, которые я могу брать и выполнять. Автоматизация процессов, улучшение инфраструктуры, так как в современном мире любая организация стремится к модели Infrastructure as a Code.
В-третьих, программирование(не только на Python) — это прямой путь к DevOps практикам и методологии в целом.
В-четвертых, каждое self-review позволяет без особого труда обозначить твою значимость, как постоянно развивающегося высококвалифицированного специалиста. Это позволило мне хорошо пройти предыдущее ревью и получить небольшое повышение в должности.
Собеседования
Если открыть hh.ru, запросить вакансии «Системный администратор Linux»(middle), в навыки которого обычно не входят K8s, CI/CD, обязательные навыки программирования, Docker swarm и тому подобные вещи, вилка ЗП обычно от 110 000 до 150 000. Возьмем в расчет так же то, что на 150 можно выйти, если хорошо пройти собеседование.
Каждый раз, когда я пишу self-review, я параллельно прохожу собеседования. Это нужно исключительно для моих тараканов в голове, чтобы доказать, что я заслуженно прошу повышение зарплаты и рынок мне может предложить столько же.
В этом году моя схема работала также, ревью + собеседования. Но каково же было мое удивление, когда я проходил некоторые собеседования, мягко говоря посредственно, но исключительно из-за умения писать на Python некоторые работодатели предлагали перейти на ЗП выше 150к плюс обучение. Впервые в жизни я из 10 пройденных собеседований получил 3 крайне привлекательных письменных оффера.
Итоги
Основываясь на полученном опыте я могу с уверенностью сказать, что стоит найти свою мотивацию и постоянно развиваться, это не только хорошо оплачивается, но и очень интересно.
Одним лишь инструментом можно расширить свои умения и востребованность на рынке до серьезного уровня.
Сильным и красивым инженером я ещё не стал, но у меня всё впереди. Я верю в себя и своё желание учить что-то новое. Спасибо за уделенное время, надеюсь история о моём опыте кому-то пригодится.
P.S. На самом деле, Python можно заменить и другим языком. Например, Go. Но про это я уже смогу написать статью только тогда, когда буду знать, о чем я пишу ¯\_(ツ)_/¯
Используйте Python в Linux. Хороший способ научиться программированию.

Хотя некоторые из лучших интегрированных сред разработки для Python доступны в Linux, вы также можете использовать текстовый редактор вашего дистрибутива.
Использование Python в Linux — одно веселый и простой способ начать программировать. Какие дань уважения Гвидо Ван Россуму, создатель этого популярного языка программирования, давайте посмотрим, как настроить среду программирования Python в нашем дистрибутиве Linux.
- 1 Зачем использовать Python в Linux?
- 2 Начало использования Python
- 3 Написание более длинных программ
- 4 VSCodium
Зачем использовать Python в Linux?
Python — это простой в освоении язык программирования. Имеет огромную базу документация на нашем языке (большая часть бесплатна) и может использоваться как для создания небольших терминальных приложений, так и для больших проектов с графическим интерфейсом.
Код, разработанный на Python можно использовать на Linux, Windows, Mac, Android и на разных типах устройств нравятся смарт-телевизоры и GPS.

С помощью приложения Qpython3 мы можем писать и запускать код Python 3 на нашем Android-устройстве.
Начало использования Python
Поскольку большинство (если не все) дистрибутивов Linux Они готовы использовать Python, первое, что нужно сделать, это проверить версию. что мы установили. В настоящее время сосуществуют ветвь 2 и ветка 3. Однако ветка 2 исчезнет в 2020 году.
Мы можем проверить используемую версию с помощью команды
python —version
Если вы используете относительно новый дистрибутив, вы можете получить сообщение об ошибке. Если да, попробуйте это:
python3 —version
Если вы использовали первую команду, а номер версии начинается с 2, попробуйте выполнить вторую команду, чтобы узнать, установлен ли у вас Python 3.
Если у вас нет версии, найдите Python в диспетчере программного обеспечения вашего дистрибутива, чтобы установить его.
также рекомендуется установить Pip.Pip — это аббревиатура от Pip Installs Packages, менеджера пакетов, который упростит вам получение библиотек для Python.
В Debian и производных вы можете сделать это с помощью команды
sudo apt install python3-pip
В других дистрибутивах он просто ищет python3-пип в диспетчере пакетов

Набрав команду python3 в терминале Linux, мы можем открыть интерпретатор python и запустить короткие программы.
Давайте протестируем код.
В типе терминала:
python3
print(«Linux Adictos»)
Давай займемся математикой
print (20*5)
Обратите внимание: поскольку в нем нет кавычек, то печатается результат. Вместо этого, если мы сделаем:
print («20*5)
Посмотрим, что мы заключили в скобки.
Мы можем использовать переменные.
Введите терминал.
a=20
b=10
print (a*b)
Также можно сделать это с помощью слов. Нам просто нужно добавить цитаты.
blog=»Linux Adictos»
print(«El mejor blog sobre Linux es «, blog)
Теперь поработаем с введенными нами данными.
В терминале пишем:
numero1=input(«Ingrese un número: «)
Нажатие Enter попросит нас ввести число. Сделав это и нажав Enter, мы набираем:
numero2=input(«Ingrese otro número: )
Нажимаем Enter, записываем другое число и снова нажимаем Enter.
Теперь пиши;
печать (число1 + число2)
Написание более длинных программ
Вы могли заметить, что с помощью терминала невозможно писать длинные программы. Фактически, существует несколько интегрированных сред разработки, которые упрощают написание кода Python. Исаак прокомментировал некоторые из них в этой статье. Однако в рамках данной статьи мы остановимся на текстовом редакторе.
Если у вас все еще открыт терминал, закройте его. Теперь откройте текстовый редактор вашего дистрибутива и напишите.
blog=»Linux Adictos»
nombre=input(«¿Cuál es tu nombre: ?»)
print(nombre, «cree que», blog, «es el mejor blog sobre Linux»)
Сохраните его в личной папке с именем test.py.
Откройте терминал и введите
python3 prueba.py
VSCodium

Интегрированная среда разработки VSCodium использует исходный код Visual Studio Code
Как я сказал выше, существует множество вариантов интегрированной среды разработки, которые вы можете использовать для создания кода в Linux. По моему мнению, лучшая альтернатива — VSCodium.
VSCodium построен на исходном коде Visual Studio Code, интегрированной среды разработки MIcrosoft. Разница в том, что он компилируется без каких-либо инструментов отслеживания, которые компания добавляет к нему. Программу можно использовать в Windows, Linux и Mac и скачать отсюда:
После установки из меню расширений установите расширение. Питон.
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Полный путь к статье: Любители Linux » Общие » Используйте Python в Linux. Хороший способ научиться программированию.
5 комментариев, оставьте свой
Оставьте свой комментарий Отменить ответ

Грегори Рос сказал
тому назад 4 лет
Я не программировал слишком много лет, из любопытства читал о таких-то языках, их улучшениях и новостях. Я был удивлен / удивлен мощью Python и тем, насколько легко его учить, ясно, что если однажды я вернусь к программированию на Python, он станет кандидатом на него. Для меня нет ничего необычного в том, чтобы читать опросы и видеть, что это предпочтительный язык разработчиков. Также ясно, что в зависимости от того, какие задачи существуют другие языки, такие как C / C ++, которые подходят для этой цели, но учитывая язык для «общего» использования или для начала, в настоящее время он является королем.

Диего Герман Гонсалес сказал
тому назад 4 лет
По крайней мере, это не вызывает ненависти, которую, например, порождает Java.

Грегори Рос сказал
тому назад 4 лет
Я особенно отношусь к тем, кто не любит Java, это не ненависть, не мания или что-то в этом роде, я не видел никаких оправданных причин для ее создания. В качестве интерпретируемого языка у них уже был Python, например, он также является мультиплатформенным, с синтаксисом высокого уровня, а также открытым и бесплатным, я просто рассматривал его скорее как маневр Sun Microsystems, надеюсь, чем как нечто практическое, личное мнение. Но я не думаю, что это ненависть, только то, что по сравнению с Java она теряет много очков, единственное, что ставит ее на лидирующие позиции, — это поддержка великих.

Yo сказал
тому назад 4 лет
вау, я просто смотрю, как установить пип, большое спасибо!

Мисаэль Салазар сказал
Зачем Python?
Обычно, ЯП — это инструмент, заточенный для решения задач в какой-то определенной сфере. У создателей ЯП была для него ЦЕЛЬ, которая наполняла смыслом бытие ЯП. Или же ЯП оказался обладателем таких характеристик, которые позволили эффективно решать определенные задачи, даже если изначально на него были другие планы. Это также объясняет необходимость существования ЯП.
Что-то низкоуровневое — Си, Rust, Ada; сервер — PHP, Go (а где-то Java, JS); клиент — JavaScript; энтерпрайз — C#, Java; скрипты для CLI — bash, lua (хотя сойдут PHP или JS); математика — R, Fortran; мобильные приложения — Java, Kotlin, Swift; начальное обучение — Basic, Pascal (можно Lisp, но лучше не стоит). Всё ясно, понятно.
А какие специфические задачи решает Python? В чём его смысл? Вот в (https://youtu.be/KnFrdzG79ak?t=532) МФТИ на информатике говорят, что Python — это классная штука, так как на нём можно всё (и в web, и в смартфон), мол универсальный. Но, имхо, это скорее минус, чем плюс. Это как швейцарский нож — может многое, но всё не очень качественно. В (https://youtu.be/bX3jvD7XFPs) MIT’e перевели обучение с эльфийского (Scheme) на Python. Ну для педагогических целей, для первокурсников, может Python и выглядит лучше. Хотя как аргумент в его пользу — ну так себе.
Пока я вижу, что в реальном мире Python (объективно) нужен для двух задач:
1. Поддержка legacy-кода, уже написанного адептами Python’а. Например, какие-нибудь скрипты для иксов, скрипты для сис.админов и т.п.
2. ML. Просто потому, что под ML были написаны нужные библиотеки (в нужном кол-ве и кач-ве) именно на Python. По неизвестным причинам написаны.
Сфера для (эффективного) применения Python’а очень мала, или мне показалось?
При этом, повсеместно говорят о популярности Python, как это модно-молодежно, его мол и учите. Закрадываются подозрения. А не является ли широкая популярность (или слухи о ней) Python исключительно маркетинговым явлением, когда ЯП, опять же по неясным причинам, проталкивают сверху? Если это так, то для чего это делают? А если не так, и он объективно эффективно решает какие-то задачи (почему его добрые люди и советуют), то объясните какие это задачи, какова целевая сфера применения Python’а, каков его смысл, цель.