Автор: Хотенов Артём (GitHub @hotenov)
Версия: 1.0.0 (2024-09-09)
Данная инструкция поможет начинающему специалисту настроить Python проект
на вашем ПК под управлением Windows
и менеджером зависимостей poetry.
Инструкция также будет полезна для продвинутых (опытных) пользователей,
кто ранее не работал с poetry или с Windows.
- Предусловия
- Подготовка окружения и нюансы перед выполнением
- Установка Python
- Установка pipx
- Установка Poetry
- Создание Poetry проекта (создание pyproject.toml)
- Установка виртуального окружения (venv)
- Что дальше?
- Поддержка автора
-
Вы должны уметь устанавливать программы из дистрибутива и понимать какой дистрибутив вам нужно скачать с сайта (например, для Windows x64). Соответственно, ваш пользователь операционной системы (ОС) должен иметь права на установку приложений и на изменение некоторых настроек ОС.
-
Вы должны уметь запускать и пользоваться консолью (также известная как: командная строка (cmd) / терминал / shell) и выполнять в ней базовые команды (создание папок, переход к папке и т.д.).
- Чуть-чуть подумать перед выполнением каждой команды :) Приведенные в инструкции команды (пути) могут содержать ошибки / неточности / опечатки. Поэтому не стоит "слепо" их копировать, а адаптировать под ваши нужды и окружение.
- Также внимательно копируйте текст команды (особенно если она приведена в тексте), т.к. при выделении можно случайно захватить запятую или другой символ.
-
Понимать, что такое интерпретатор языка Python, т.к. в тексте он зачастую будет называться просто Python. Если понимания нет, то приравнивать эти термины.
-
Вводить и запускать команды в окне Выполнить, которое появляется при нажатии сочетания клавиш Win + R
-
Windows 10 (в теории должно подойти и для Windows 11, но я не тестировал).
У каждого из читателей данной инструкции система (ОС Windows) имеет разное исходное состояние перед выполнением конкретных шагов. Для того, чтобы "всё работало" по итогу, нам необходимо привести систему в некоторое "общее" состояние (относительно Python инструментария).
-
Проверьте, что ваш пользователь в системе не содержит пробелов и кириллицы. Для этого откройте консоль, выполнив команду
cmdв окне Выполнить (Win + R) (по умолчанию консоль должна открыться в вашей Персональной папке, по пути:
C:\Users\UserName>
где вместо UserName имя вашего пользователя (без пробелов и кириллицы).Если в имени вашего пользователя есть пробелы и кириллица рекомендуется его изменить (как это сделать, обратитесь к поиску в Интернете). НО перед сменой имени пользователя рекомендуется удалить (если есть) все установленные версии Python.
Если в консоли вы видите стартовое сообщение (prompt)
C:\Windows\system32>, значит вы открыли консоль в режиме Администратора. Перезапустите консоль от пользователя (см. выше) или выполните командуcd /d %USERPROFILE%, чтобы перейти в Персональную папку и посмотреть имя пользователя. ☝️ Однако, дальнейшие действия не подразумевают, что вы открыли консоль от Администратора. Поэтому если что-то не сходится (не получается), держите это в голове. -
(не обязательно, но я бы рекомендовал). Удалите все версии Python установленные ранее либо через дистрибутив, либо через приложение Магазин (Microsoft Store). Разумеется, если они у вас уже НЕ задействованы в проектах / скриптах. Зачем? Чтобы иметь "чистый лист" и избежать некоторых проблем (как новичку), связанных с наличием сразу нескольких версий Python на компьютере.
Если нет возможности / желания удалять, то вам, возможно, придется самостоятельно настроить переменную окружения Path, чтобы по команде
pythonзапускался подходящий интерпретатор (не меньше версии 3.8). А также учитывать, что командыpyиpipмогут вести к неверной версии Python (например, у вас есть версия 3.11, а если дальше будете следовать инструкции и сверху установите ещё и из дистрибутива версию 3.12.5, то иpyиpythonиpipбудут вести к версии 3.12.5, а не 3.11). -
Необходимо отключить псевдонимы выполнения приложения для Установщика приложений (во избежание проблем в будущем).
Для этого перейдите в Настройки Windows:
Параметры -> Приложения -> Псевдонимы выполнения приложения (ссылка справа, под "Приложения и возможности") -> Отключаем два переключателя для "python.exe" и "python3.exe" (оба под "Установщик приложения")
Если они уже отключены, то переходите к следующему шагу.
Перед установкой нам необходимо скачать дистрибутив (установщик). Устанавливать можно последнюю стабильную (stable) 3.12.x, если у вас новый проект и импортируемые библиотеки тоже регулярно обновляются. Но можно установить и 3.11.х (её должны поддерживать уже большинство библиотек). НО не ниже 3.8 (и даже 3.10 уже для некоторых проектов).
-
Перейдите на страницу загрузок python.org и найдите подходящую для вас версию.
Для ленивых: Прямая ссылка для скачивания 📥 Python 3.12.5 (amd64) -
Перейдите к скачанному файлу в Проводнике и установите Python.
В диалоге установки рекомендую:
- убрать галочку "Use admin privileges when installing py.exe"
- поставить галочку "Add python.exe to PATH"
После завершения установки, откройте новое окно консоли (Win + R -> cmd). В консоли выполните команду, которая выведет "активную" версию Python:
❗ Важно: Далее я буду использовать только
python(неpy) в приведённых командах, т.к. большинство из них можно выполнять и на macOS / Linux машинах, а версия Python 2.7 уже не включена в современные версии этих ОС.python --version# Вывод: Python 3.12.5
💡 Совет: Если отображается не та версия, то для диагностики проблемы можете использовать команду
where.exe python. Она выведет вам пути, где система "нашла" исполняемый файлpython.exe. Ищет система "сверху" (т.е. чем выше путь, тот и запустится). Как менять порядок путей я описал на вики-странице Configure the order in PATH variable проекта pyenv-win (правда, на английском языке).💡 Совет: Рекомендую познакомиться с менеджером версий Python для Windows pyenv-win Этот инструмент позволит максимально упростить установку разных версий Python (причём только интерпретатора, без дополнительных IDLE и документации) и быстрое переключение между ними в консоли.
pyenv-winэто типа "копия" (порт) утилиты pyenv для Linux / macOS, у вас даже команда будет такая жеpyenvв консоли. НО учтите, что это разные команды и надо читать документацию, прежде чем запускать команды из туториалов в Интернете. Не забывайте у вас (у нас) Windows и мы должны страдать 😃. Как использовать / настраиватьpyenvв данной инструкции не приводится. Но если будет запрос на такую инструкцию у аудитории, а у меня время, то, возможно, она появится в недалёком будущем).
Note
Для справки (с сайта документации проекта pipx):
pipx - это инструмент который позволяет устанавливать и запускать Python приложения из изолированных окружений. Он чем-то напоминает утилиты: brew на macOS, npx в JavaScript's, и apt на Linux.
В нашем случае pipx нам нужен для лёгкой установки менеджера зависимостей poetry (и последующего его обновления) и не только его. pipx также поможет вам с установкой и других консольных утилит (nox, например).
-
Установите
pipx, выполнив команду в консоли:python -m pip install --user pipxСкорее всего, вы увидите предупреждение (Warning) о том, что
..\Scriptsпапка не добавлена в PATH. Не пугайтесь! Сейчас всё поправим :) -
Для добавления пути к директории (папки) куда установился
pipx.exeв переменную окружения PATH, воспользуйтесь следующей командой:%APPDATA%\Python\Python312\Scripts\pipx.exe ensurepath❗ Важно: Если у вас активный Python не
3.12.x(то скопируйте название папки из текста предупреждения, т.е....\Python311\...,Python310и т.д. -
Откройте новую консоль (окно), и проверьте что
pipxтеперь доступен без полного пути:pipx --version# Вывод: 1.7.1
💡 Совет: Для обновления самого
pipxв будущем, используйте команду:python -m pip install --user --upgrade pipx
poetry - менеджер зависимостей (пакетов / библиотек) для вашего Python приложения. poetry также упрощает (берёт на себя) работу с виртуальным окружением (aka "venv"), сборкой и публикацией пакета Python.
С poetry вы можете забыть про pip install, requirements.txt и постоянную активацию / деактивацию виртуального окружения при добавлении / удалении зависимостей. A его авто-генерируемый файл poetry.lock позволяет быть уверенным, что ваш коллега или CI установят те же версии пакетов на своей машине (компьютере).
-
Установите Poetry командой в консоли:
pipx install poetry -
Проверьте установку (должно работать даже в том же окне консоли)
poetry --version# Вывод: Poetry (version 1.8.3)
💡 Совет: Для обновления
poetryв будущем, используйте команду:pipx upgrade poetry
(или инициализация файла pyproject.toml)
Poetry проектом называют директорию (папку) в котором находится файл pyproject.toml, где зависимости и сведения для проекта указаны для менеджера зависимостей poetry (который мы установили на предыдущем шаге).
Файл pyproject.toml может быть создан в любом текстовом редакторе вручную (или скопирован у соседа :) ), но также есть специальная команда poetry init для его создания в интерактивном режиме (т.е. отвечая на вопросы скрипта).
Далее мы создадим новый проект (папку) demo-starter на Рабочем столе, чтобы продемонстрировать работу poetry.
-
Создайте папку на рабочем столе
Примечание: Вы можете использовать другое расположение (не Рабочий стол). Но главное не забудьте переместиться в эту папку в консоли.
Следующая команда создаёт папку проекта и перемещается в неё (можете выполнять атомарные команды (до и после символа
&) по отдельности):md %USERPROFILE%\Desktop\demo-starter & cd /d %USERPROFILE%\Desktop\demo-starter -
Создаёте файл pyproject.toml в интерактивном режиме
Примечание: Если файл уже создан (т.е. существующий проект), то перейдите у пункту Установка виртуального окружения
poetry initДля ознакомительных целей можете заполнять значениями по умолчанию (приведены в квадратных скобках
[ ]), нажимая клавишу Enter.НО, для поля Author укажите ваши имя и емейл в формате
Artem Hotenov <qa@hotenov.com>
(т.е. емейл в угловых скобках должен быть)НО, на вопрос "Would you like to define your main dependencies interactively? (yes/no)" укажите
noНО, на вопрос "Would you like to define your development dependencies interactively? (yes/no)" укажите
noВ конце проверьте (глазками) указанные данные и, если всё ОК, подтвердите генерацию файла, ответив
yesна вопрос "Do you confirm generation? (yes/no)"(по желанию) Для уверенности, можете вывести список файлов в директории, чтобы убедится, что файл создан:
dir /b
# Вывод: pyproject.toml
Не принципиально, но для единообразия и некого удобства будем создавать виртуальное окружение (venv) внутри нашего poetry проекта (т.е. корневой директории проекта).
poetry создаст папку (виртуальное окружение) с именем .venv
Important
К сожалению, имя .venv пока нельзя изменить в настройках poetry и это может быть проблемой в некоторых случаях (но они все некритичные и решаемые 😃).
-
Настройте (сконфигурируйте)
poetryдля создания виртуального окружения внутри проекта❗ Важно: Не пропустите эту команду! Иначе намучаетесь потом искать где venv для вашего проекта (конечно, обращение к начинающим)
poetry config virtualenvs.in-project trueПримечание: Команда "молчаливая" (т.е. результатам её выполнения будет пустая строка ("ничего") и это нормально).
💡 Совет: Команда выше изменит "глобальную" настройку
poetry, т.е. далее во всех проектах виртуальное окружение будет создаваться "внутри проекта". При этом вы можете указать (применить) эту настройку только для текущего проекта (папки), выполнив:
poetry config virtualenvs.in-project true --local -
Создайте виртуальное окружение
poetry install --no-rootБудет создана папка
.venv(с копией интерпретатора Python) и файлpoetry.lock. Вы можете проверить себя вновь командой:
dir /b
# Вывод столбиком: .venv poetry.lock pyproject.tomlСамостоятельно: Чтобы не писать опцию (флаг)
--no-rootможно отредактировать файлpyproject.tomlи добавить строчкуpackage-mode = false
Собственно, об этом вам выскочит предупреждение, если забудете указать--no-root. При этом виртуальное окружение создаётся (пока разработчикиpoetryне поменяют это на ошибку).
И, разумеется, как только у вас будет сконфигурирован ваш пакет (приложение) вpyproject.tomlи вам надо будет устанавливать его с другими зависимостями, то--no-rootвам больше будет не нужен. -
Добавьте нужные зависимости (пакеты / библиотеки)
poetry add selene --allow-prereleases
poetry add pytest
и т.д.💡 Совет: Подробнее об установке зависимостей и ограничениях версий вы можете почитать на сайте с документацией Poetry. Но они на английском.
-
(бонус) Запускайте консольные утилиты внутри вашего виртуального окружения
poetry run pytestЧто равнозначно последовательности команд:
.\.venv\Scripts\activate pytest deactivate
Надеюсь, у вас всё получилось с первого раза и теперь вы умеете разворачивать Python проект "с нуля" довольно продвинутым способом на Windows. Ведь до сих пор есть программисты, которые используют pip и даже не используют venv, устанавливая все зависимости "глобально".
Теперь посоветовал бы вам познакомиться с IDE (интегрированной средой разработки), где некоторые вещи можно делать в несколько кликов или не делать совсем 😃, т.к. они делаются автоматически. Например, активация виртуального окружения (если оно есть) во встроенном (интегрированном) Терминале при его открытии.
Я сам использую VS Code (т.к. мне зачастую нужен не только Python, но и для Python VS Code тоже прекрасно подходит). Есть ещё узконаправленный PyCharm (если вы фанат продуктов JetBrains или вам навязали его на работе / курсах / в метро 😃).
Развивайтесь (двигайтесь) дальше по этому нелегкому пути. Вот лишь несколько направлений, которые вы можете освоить, чтобы стать ещё более эффективным и продуктивным:
- Детальнее изучить возможности задействованных инструментов
pipxиpoetry - Перейти на
pyenv(проект pyenv-win) для управления версиями Python. - Перейти на современный PowerShell 7 и сделать его своим основным шеллом (консолью) как в системе, так и во встроенном Терминале IDE.
- Установить Windows Terminal и ознакомиться с его возможностями.
- Настроить себе oh-my-posh и радоваться не "серой" командной строке.
Вы можете поддержать автора этого туториала @hotenov как морально, так и материально (ссылки ниже).
Ставьте "звёзды" 🌟 этому документу и ваши реакции. Пишите комментарии и делитесь ссылкой с коллегами.
Финансовая помощь ещё больше приветствуется 😃 Так вы сможете подтолкнуть меня написать ещё инструкций в подобном стиле (где "всё разжёвано"), если вам понравилась эта и вы уже купили все курсы в Интернете 😃.
- Закинуть через T-Банк (ранее Тинькофф Банк) -> Перевод в Т-Банк
- Через сервис Юmoney
Сам курсов пока не виду и не произвожу (видео), но могу провести частные консультации (если они вам нужны и вы не бедствуете). Буду честен, я далеко не гуру (и сам постоянно учусь), но прочитаю за вас необходимую документацию и приложу свой многолетний опыт в решении ваших проблем. Пишите в Телеграме или на почту qa@hotenov.com
А я, в свою очередь, хочу сказать спасибо:
- Участникам чата Selene.py на русском, которые поддержали мою идею по написанию данной инструкции.
- Ксении Севостьяновой, за мотивацию и самый первый фидбек.
**Ваше имя может оказаться здесь, если поддержите финансово и пожелаете быть упомянутым**
© 2024 by Artem Hotenov is licensed under CC BY 4.0

