Open13

最近の Python の仮想化について調べる

Shunsuke SuzukiShunsuke Suzuki

aqua の Python 対応に関連して、 pip で CLI ツールをインストールする際の仮想化について調べる。
Python にはいろいろな仮想化ツールがあってややこしいという印象

https://github.com/python-poetry/poetry
https://github.com/astral-sh/uv
https://github.com/astral-sh/rye
https://github.com/pypa/pipx

--

https://github.com/tox-dev/tox
https://github.com/wntrblm/nox
https://github.com/pew-org/pew
https://github.com/python-virtualenvwrapper/virtualenvwrapper

Shunsuke SuzukiShunsuke Suzuki

aqua で Python 本体のバージョンを管理する場合、 aqua は Python package のバージョンの管理まではしないので、 package のバージョン管理をするほかのツールと組み合わせることになる。

Shunsuke SuzukiShunsuke Suzuki

uv は pyenv や poetry を置き換えると言っている。ということは Python と package の両方管理できるのかな

A single tool to replace pip, pip-tools, pipx, poetry, pyenv, virtualenv, and more.

Shunsuke SuzukiShunsuke Suzuki

つまり aqua で Python を管理する場合、組み合わせて使うのは

  • venv
  • virtualenv (venv のほうが推奨?)
  • poetry
  • pipx
Shunsuke SuzukiShunsuke Suzuki

aqua で Python を管理するために PIP_TARGET を設定すると venv が動かなくなる。
正確に言うと PIP_TARGET で指定したパスにインストールされてしまう。
常に venv を使うのであれば PIP_TARGET は設定する必要はないが、
プロジェクトのツールは venv 使いつつ global には使わない、ということも考えられるので難しい。