Open10
poetryとpyenvを使ったお手軽な仮想環境構築
$ python --version
$ pyenv versions
3.8.2
* 3.9.6 (set by /home/kumamoto/.pyenv/version)
$ pyenv install 3.9.6
$ pyenv global 3.9.6
$ python --version
Python 3.9.6
[kumamoto poet-practice]$ poetry init
This command will guide you through creating your pyproject.toml config.
Package name [poet-practice]:
Version [0.1.0]:
Description []:
Author [kumamoto <hoge@example.com>, n to skip]:
License []: MIT
Compatible Python versions [^3.8]: ^3.9
Would you like to define your main dependencies interactively? (yes/no) [yes] no
Would you like to define your development dependencies interactively? (yes/no) [yes] no
Generated file
[tool.poetry]
name = "poet-practice"
version = "0.1.0"
description = ""
authors = ["kumamoto <onioni9999nagare@gmail.com>"]
license = "MIT"
[tool.poetry.dependencies]
python = "^3.9"
[tool.poetry.dev-dependencies]
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
Do you confirm generation? (yes/no) [yes]
$ poetry env use 3.9.6
Creating virtualenv poet-practice-O7JUgyXW-py3.9 in /home/kumamoto/.cache/pypoetry/virtualenvs
Using virtualenv: /home/kumamoto/.cache/pypoetry/virtualenvs/poet-practice-O7JUgyXW-py3.9
仮想環境が{cache-dir}/virtualenvs
に作られる。{cache-dir}
はUnix系ならデフォだと~/.cache/pypoetry/virtualenvs
。
$ cd ~/.cache/virtualenv
$ ls
envs.toml poet-practice-O7JUgyXW-py3.9
$ cat envs.toml
[poet-practice-O7JUgyXW]
minor = "3.9"
patch = "3.9.6"
poetryの用意してくれた仮想環境に入る。
グローバルな環境を元に戻してももちろん仮想環境に影響は出ないので大丈夫
$ pyenv global 3.8.2
$ python --version
Python 3.8.2
$ poetry shell;
Spawning shell within /home/kumamoto/.cache/pypoetry/virtualenvs/poet-practice-O7JUgyXW-py3.9
. /home/kumamoto/.cache/pypoetry/virtualenvs/poet-practice-O7JUgyXW-py3.9/bin/activate
$ . /home/kumamoto/.cache/pypoetry/virtualenvs/poet-practice-O7JUgyXW-py3.9/bin/activate
-- 仮想環境に入ったあと
(poet-practice-O7JUgyXW-py3.9) $ python --version
Python 3.9.6
{cache-dir}/virtualenvs
下のenvs.toml
の値を書き換えても、バージョン変更出来る。
※ただしpyenvで必要なバージョンのPythonを入れて、pyproject.toml
などの記述も必要な箇所書き換えていく必要はある。
必要なパッケージを入れる
$ poetry add django@3.2
$ poetry add --dev mypy
--dev (-D): Add package as development dependency.
--path: The path to a dependency.
--optional : Add as an optional dependency.
--dry-run : Outputs the operations but will not execute anything (implicitly enables –verbose).
--lock : Do not perform install (only update the lockfile).
パッケージは下記に入っている。
~/.cache/pypoetry/virtualenvs/仮想環境名/lib/pythonバージョン名/site-packages
依存をインストール
$ poetry install
-
poetry.lock
がない時
pyproject.toml
に基づいて出来る限り最新のバージョンのパッケージが入る。
また、poetry.lock
が新規に生成される。
-
poetry.lock
がある時
poetry.lock
に記載通りのバージョンのパッケージが入る。
pyenv
入れ方
下記に従って入れる。
pyenv
の基本
TODO
pyenv install --list
で必要なバージョンがリストになかった場合
pyenv install --list
はインストール可能なバージョン一覧を表示してくれる。
ただpyenv自体が古いと最新のバージョンが載っていないこともある。(つまりインストール出来ない)
pyenvのアップデートはpyenv-updateがおすすめ。
なぜバージョン管理と仮想環境構築をするのか?
TODO