Pythonのパッケージ管理ツールはRubyのよりも不親切

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

Pythonのパッケージ管理ツールが思ったより不親切である。特にRubyのBundlerに使い慣れていると特にそう感じる。ここでは私が感じたPythonとRubyのパッケージ管理ツールの違い等について書いてみたい。

Pythonでは、今日においては、多くの場合、「pip」というパッケージ管理システムが使われている。過去には「easy_install」が使われていたようだ。一方で、RubyではRubyGemsが使われているほか、一括してインストールするためにBundlerも使われる。

その上で、個人的に不親切だと考えているのは、pipにおいては、プロジェクトレベルでパッケージをインストールすることができず、システムレベル、あるいは仮想環境レベルでしかインストールできないということである。

Rubyのパッケージ管理ツール、特にBundlerを使った場合であれば、bundler install --path=vendor/bundleとして、プロジェクト内のvendor/bundleディレクトリーにGemsパッケージをインストールすることが可能で、システムに影響を及ぼさない使い方がかなり容易にできる。

一方で、Pythonの場合は、python -m venv /path/toで仮想環境を作成することは可能、また、pip freeze > requirements.txtで現在インストールしているpipパッケージを書き出し、pip install -r requirements.txtでパッケージをインストールすることは可能ではあるが、システムレベルにインストールすることが前提となっているフシがあって使いづらい部分がある。

これには、それぞれの言語を取り巻く環境が違うというのにも影響しているのかもしれない。Rubyではウェブアプリケーションに強みを持つ一方、Pythonでは機械学習など学術分野に強いという傾向があると言われているが、その部分でもパッケージ管理システムに影響を及ぼしているのだろうか?

個人的にはPythonでもRubyのBundlerのようなシステムがあればいいのにと考えていたりする。

タイトルとURLをコピーしました