Python の開発環境
pip と pyenv で止まってる。どのコマンドがどの機能を使っていて、どのファイルやフォルダがどのコマンドと関連しているのかまるでわからないので調べた。
pip
pip: Python環境構築ガイド - python.jp
pip は、The Python Package Index に公開されているPythonパッケージのインストールなどを行うユーティリティで、Python 3.4以降には、標準で付属しています。
Node.js の npm みたいなものだと思っている。
requirements.txt
は pip で入れた依存ライブラリの一覧が管理されるファイル。 Node.js でいう package-lock.json
に近いと思っている。
pyenv
pyenv lets you easily switch between multiple versions of Python. It's simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well.
This project was forked from rbenv and ruby-build, and modified for Python.
Node.js の nodenv や nvm みたいなものだと思っている。
.python-version
ファイルは pyenv 用のやつ。そのフォルダ配下のデフォルトの python バージョンを pyenv に指示する。
virtualenv
仮想環境: Python環境構築ガイド - python.jp
Python を使って開発や実験を行うときは、用途に応じて専用の実行環境を作成し、切り替えて使用するのが一般的です。こういった、一時的に作成する実行環境を、「仮想環境」 と言います。
プロジェクトごとに Python のバージョンとか分けたいと。
ここでは、Python3 の標準ライブラリである venv で仮想環境を作成する方法を紹介します。
といいつつ次のステップが pip install virtualenv
になっている。
virtualenv == venv ???
venvとvirtualenvの違い - 🍊miyamonz🍊
virtualenvの一部機能がvenvとして切り出されて、それは標準に取り込まれた
virtualenvは引き続きその他の機能を有しており、実際2020現在も開発は継続されているっぽい
なるほど。
.venv
フォルダは、 virtualenv でよく使われる、その仮想環境の情報や依存ライブラリが格納される。 .venv
という名前はデファクトな慣例であって仕様ではないよう。
Homebrew でも入る。 brew install virtualenv
pyenv-virtualenv
pyenv/pyenv-virtualenv: a pyenv plugin to manage virtualenv (a.k.a. python-virtualenv)
pyenv-virtualenv is a pyenv plugin that provides features to manage virtualenvs and conda environments for Python on UNIX-like systems.
UNIX 系システム上の Python の virtualenv および conda 環境を管理する機能を提供するpyenvプラグインです。
Homebrew でも入る。 brew install pyenv-virtualenv
Python のバージョンが同じでも異なる環境を作ることができる。
なぜなら、プロジェクトが違えば、たまたま Python バージョンが同じでもそれは別の 環境(仮想環境)として管理したい。
poetry
Python のパッケージマネージャの1つで pip の同類で後発。
Node.js の yarn や pnpm に近いポジショニングだと思ってる。
-
pyproject.toml
はpoetry new
やpoetry init
で作成される プロジェクトの設定ファイル。 Node.js でいう package.json に近いと思ってる。 - ちなみに
poetry export -o requirements.txt --without-hashes
などとすればいつもの requirements.txt 形式を出力することもできる。 -
poetry.lock
はpoetry install
したりすると作られる書く依存ライブラリのバージョン情報などを格納したファイル。 Node.js でいう 'package-lock.json' に近い。 Python 標準のフォーマット。 -
poetry.toml
はpoetry config -local
コマンドなどで書き込まれる、 このプロジェクトだけの poetry 自体の設定を保持するファイル。 ちまたの記事はpyproject.toml
とpoetry.toml
がごっちゃになっているものがいくつかある。
参考
Linter とか Formatter とかの開発環境ツールいろいろ
isort # Formatter: import 並び替え
black # Formatter: '' が "" に全部変更された。。
flake8 # Linter
mypy # Linter: 型ヒントのチェック
pysen # 上記4つの実行オーガナイザ。 pysen run lint で全部実行できる。
参考
Discussion