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のようなシステムがあればいいのにと考えていたりする。
ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。