Автор предлагает использовать Linux / WSL / MacOS с поддержкой команд bash, curl, git. Однако эти заметки составлены при прохождении туториала под Windows.
git clone [email protected]:Winand/tutorial-hypermodern-python-winand.git. То же по HTTPS: git clone <https://github.com/Winand/tutorial-hypermodern-python-winand.git>. Также можно склонировать в GUI-клиенте (например Fork).
Установить pyenv для управления виртуальными средами.
pyenv virtualenv-init, вероятно, она относится к ‣Invoke-WebRequest -UseBasicParsing -Uri "<https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1>" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1" После завершения установки требуется перезапустить PowerShell для обновления переменной PATH. Если используется Windows Terminal, то создать новую вкладку не достаточно, нужно запустить приложение ещё раз. В конце можно удалить файл install-pyenv-win.ps1Установить Python через pyenv. В Windows последнюю минорную версию можно узнать с помощью команды pyenv install -l | findstr 3.10. Если нужной версии нет, можно попробовать обновить список версий с помощью pyenv update (медленно).
pyenv install 3.8.10
pyenv install 3.9.13
pyenv install 3.10.9
%UserProfile%\\.pyenv\\pyenv-win\\versions. При первой установке, создаётся папка %UserProfile%\\.pyenv\\pyenv-win\\shims, добавленная в PATH при установке pyenv; после этого вызов команд python, pip и т. д. осуществляется из этой папки. Если ранее был установлен Python из Windows Store, можно запустить его из папки %LocalAppData%\\Microsoft\\WindowsAppspy под Windows, однако pyenv её не поддерживает (‣), и нужно использовать python.В папке с проектом выполнить pyenv local 3.9.13 3.10.9 3.8.10
При этом будет создан файл .python-version со списком версий Python. Затем при запуске в этой директории команд python, python3, python39 будет запущена версия Python с учётом списка версий (и их порядка) в данном файле.
<aside>
ℹ️ Добавлять .python-version в Git необязательно, см. обсуждение
</aside>
python3.9) не запускают версии Python из pyenv. ‣python/pip в этой директории. Однако другие версии Python в любом случае можно использовать, вызывая с указанием мажорной-минорной версии (например python39)..python-version может пригодиться, если установлено несколько патчей одной версии (например 3.9.12 и 3.9.13), тогда можно указать конкретную..python-version (наравне с заданными pyenv global, pyenv shell) используются nox (Test automation) при создании виртуальных окружений.<aside> 💡 Poetry vs. requirements.txt (Reddit)
</aside>
(Invoke-WebRequest -Uri <https://install.python-poetry.org> -UseBasicParsing).Content | python - --version 1.4.0 Poetry устанавливается в собственном виртуальном окружении %AppData%\\pypoetry, чтобы в дальнейшем не было проблем с зависимостями.
%AppData%\\Python\\Scripts добавляется ярлык poetry, данная папка должна находиться в PATH (добавить через редактор переменных среды в свойствах системы).<aside>
‼️ Обновление poetry даёт ошибку PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'c:\\\\users\\\\àíäðåé\\\\appdata\\\\roaming\\\\pypoetry\\\\venv\\\\scripts\\\\poetry.exe’ После этого poetry не работает. Повторная установка исправляет ситуацию и обновляет версию.
poetry self update
</aside>
В папке с проектом выполнить poetry init --no-interaction, которая сгенерирует файл pyproject.toml
<aside>
ℹ️ Initialising a pre-existing project: poetry init
</aside>
poetry init можно использовать [poetry new](<https://python-poetry.org/docs/cli/#new>) --src ., будет создана структура проекта в формате src layout (см. ниже) и сгенерируется файл pyproject.toml.“^3.9” на “^3.8”src/tutorial_hypermodern_python_winand/__init__.py. Такую структуру называют ”src layout” (❓в чём её преимущества? см. также Packaging a python library), имя папки пакета соответствует имени репозитория в snake case.__init__.py указана версия пакета: __version__ = "0.1.0"poetry install должна создавать виртуальное окружение для проекта, если не запущена в виртуальном окружении. TLDR: для получения под Windows результата как в статье, нужно добавить from = "src" в pyproject.toml, создать папку .venv, выполнить poetry install, удалить .venv
packages в pyproject.toml не соответствует структуре src layout, из-за чего команда install возвращает ошибку “<…>\tutorial_hypermodern_python_winand does not contain any element”. Должно быть: packages = [{include = "tutorial_hypermodern_python_winand", from = "src"}]prefer-active-python = true (в poetry.toml/[virtualenvs]) для использования текущего выбранного pyenv интерпретатора, но это может вызвать проблемы.python -m venv .venv (можно управлять виртуальными окружениями через pyenv, нужен плагин https://github.com/pyenv/pyenv-virtualenv), in-project = true (в poetry.toml/[virtualenvs])