インターネットにアクセスできるマシンの上では、Pythonを最小構成でインストールし、pip、pyenv、virtualenvを導入してから、必要な環境を構築するのが良い。例えば、次の順序に作業をしていくことになる。
初心者でそのマシンの上でPythonを長く使うかどうか決めてない場合、また自身がシステム管理者でない場合、まずはAnacondaをインストールするのもよい。その際、ストレージ領域を多く占有するので、不要になったらさっさと削除すること。
オフラインなマシンの上では、AnacondaをUSBメモリで持ち込むか、Pythonのインストーラと必要なライブラリのパッケージを個別にネットから持ってきてUSBメモリで持ち込んで、ライブラリのフォルダに展開するかのいずれか。
Pythonは、処理系自体の実装はミニマルを心掛けていて、機能の追加はライブラリやモジュール、パッケージなどと呼ばれるPython自身で書かれたコード群によって行われる。C言語などのコンパイルしてバイナリを動かす仕組みでは、コンパイル済みのライブラリを実行時にロードするOSの仕組みを利用して、バイナリを小さくする工夫がある。Pythonでは、モジュールの読み込みがコードの中で明示され、ソースレベルで行われる。モジュールのソースは、読み込みを高速化するためにコンパイル済みのもの(拡張子はpyc)をキャッシュとしておいておく。キャッシュは削除すれば、またコンパイルし直される。
インストールされていないモジュールを使用するには、ソースをダウンロードして、sys.pathでカバーされているフォルダのいずれかに展開する。これを手動でやるか、半自動でやるか、自動でやらせるか、の選択を実行環境(i以下、マシン)ごとに判断しなければならない。
プログラミング言語なので、インストールして使うのが基本だが、インストールの選択肢が豊富すぎて、入門時に迷うことになる。
どの手段を選択するのが良いかを説明する前に、Pythonの導入後に意図せずに陥る状況を整理しておく。
ひとつ目は、必要なライブラリが自身の環境にインストールされていないことによる。標準ライブラリはPythonと共にインストールされているが、NumPy、Pandas、scikit-learnなど、データを扱う際に基本に近いライブラリですら、ユーザ自身もしくは管理者が必要に応じてインストールしなければならない。PythonのライブラリはPythonで書かれているものが多く、ソースを入手してPythonがインストールされているディレクトリのどこかに展開する必要がある。このために、pipというパッケージマネージャが用意されている。
これらはいずれも、Pythonが現在も活発に開発が進んでいる言語であること、Pythonのコアはミニマルな仕様を心がけていて多くの機能を標準ライブラリ、外部の組織が提供するパッケージに頼っていることに起因するトラブルです。例えば有名なscikit-learnやTensorFlow、またPyTorchなど、一つのパッケージが用いるコードの全てがその開発チームによって保守されていることは稀で、NumPyやPandasなど、複数のパッケージをベースに書かれている。そのため、ベースにしたNumPyやPandasなどのパッケージのバージョンが上がる際に、その変更内容が仕様の変更を伴うのに、利用しているパッケージへの影響発生を回避できないように更新されると、Pythonを取り巻く開発の渦の一番外側にいるユーザにまで影響が及び、昨日まで動いていたコードがエラーを表示して動かなくなるという影響を受ける。
Python本体と利用するすべてのパッケージのバージョンの組み合わせを、使っているPython環境と呼ぶと、これをシステム管理者によって更新されることは、プログラマーにとっては迷惑でしかない。そのため、Pythonを業務や研究に用いる際には、セキュリティホールの影響を受けない開発環境を構築することと、Python本体と利用するすべてのパッケージのバージョンを任意のもので固定し続けることの2つのスキルが必須になる。
統計は持ち合わせていないが、Pythonに関するインターネット上の記述において、上の問題に対処するためのツールとして、pyenvとvirtualenvが紹介されている。これらは、必要は発明の母、の申し子と言える。
入門時の有力な選択肢の一つはAnacondaだ。これはパッケージマネージャだけでなく、仮想環境のマネージャも兼ねたcondaを中心としたインストール用パッケージで、Python以外にRStudio、Orange3、Visual Studio Codeなども扱う。pipとpyenvとvirtualenvの3つの機能を併せ持つと言える。Anacondaでインストールした環境でpipやpyenvを使うことや、pyenvでインストールしたAnaconda環境でpipとcondaを組み合わせて使うことも可能だが、それは、あまり推奨しない。また、コンソールを使える人は、pipとpyenvとvirtualenvの方が環境保守の作業内容が分かりやすく、作業をバッチにすることも可能なので、便利だろう。
以上のマネージャはすべて、Pythonで書かれているので、実行するためにPythonを必要とする。環境マネージャはPythonも複数持てるので、マネージャはマネージャ自身が管理するPythonの外にあるPythonに依存するのが良い。そしてJupyter NotebookはPythonで書かれたアプリケーションであり、Anacondaでもpipでもインストールできる。これはOrange3も同様。