Pythonの環境の仕組み
- パイソンには2系と3系がある(あって、使えるパッケージが異なる)、とか
- pipでパッケージをインストールする、とか
- でもcondaというコマンドもある、とか
- Anacondaを使えば、一発でそれなりのパッケージがそっくり手に入る、とか
- 色々とその場しのぎで知っているけれど
- そんなのを駆使して色々なパッケージを取ってきて使おうとすると、dependencyがうまく行かない、とか、conflictがある、とかに出会って、やる気がそがれる…
- 少し、調べもの
- python本体と実行環境(こちら)
- pythonには本体があり、2系と3系とがあり、それぞれの系にバージョンがある
- pythonにはパッケージがあり、それぞれ、バージョンがある
- パッケージには依存関係がある
- ということで
- python本体の管理と、個々のパッケージのインストール・管理と、複数のパッケージの総体としての管理をする必要がある
- conda(Anaconda,minicondaを束ねた考え方)の前には、pipで個々のパッケージ管理、virtualenvで複数のパッケージの集まりの管理、pyenvでパイソン本体の管理をし、それを記録したり移植したりするにあたり、requirements.txt , .python-versionと言ったファイルを作って管理していた
- condaはこれを変えた管理の仕方
- minicondaやanacondaには、パッケージが複数のバージョンのそれぞれで登録してあって、それらを組み合わせてpython本体とパッケージの集まりを、一箇所に集めて、それらを使って相互依存しながら実行できる「世界」を作る
- その「世界」の記録がyaml形式ファイル
- 逆に言うと、「世界」を自分で指定するのが「本来のやり方」で、それをせずに、pipで集めてきてごちゃごちゃっと作り、その環境で、また違うことをやろうとするのがある意味では間違いだ、と、そういうことのようだ
- だから、まずは「この目的のための世界」の枠を作り、そこに必要なものをとってきて、自分のコードをその上で動かして、出来上がったらyamlにして、記録する、というのが王道
- yamlファイルがあれば、それを読み込むことで、新しいPC環境上に実行環境を構築できる(こちら)
- condaに置かれていないパッケージはpipで取ってくる
- こちらも参考になる