conda と pipの違い

pythonを実務で使うためには、パッケージが必要になります。

機械学習をするためには、まず、以下のパッケージが必須と言えます。

  • pandas
  • numpy
  • scipy
  • matplotlib
  • scikit-learn
  • PyTorch

他にも、必要に応じて、パッケージをインストールしていきます。これらのパッケージをインストールするためには、基本的にはコマンドラインで

$conda install パッケージ名
$pip install パッケージ名

と入力してインストールしていくことになります。インストールできればどちらでも同じと考えている方も多いと思いますが、実際はかなり違いますので、使い方には注意が必要です。

結論から言うと、condaでインストールできる場合には極力condaコマンドを使用すべきと思います。

絶対にやってはならないのが、condaとpipを混ぜること。同じパッケージをcondaとpipの両方でインストールすると、環境が壊れます。

目次

pipはセキュリティ上問題あり

PyPIダウンロード時にコード実行する機能、犯罪に悪用される恐れ

The Hacker Newsは9月2日(米国時間)、「Warning: PyPI Feature Executes Code Automatically After Python Package Download」において、3分の1近くのPyPI (Python Package Index)パッケージがダウンロードされた時点で自動的にコードを実行すると伝えた。この機能が悪用された場合、開発者がサプライチェーン攻撃にさらされる危険性がある。


Pythonパッケージのインストール方法の一つとして、「pip install」コマンドが使われる。このコマンドを利用した場合、モジュールと一緒にバンドルされている「setup.py」というファイルが呼び出され、実行される。setup.pyは、依存関係を含むパッケージに関連するメタデータを指定するために使用されるセットアップスクリプトで、脅威アクターがこのファイルに悪意のあるコードを組み込むとされている。

掲載日 2022/09/04 著者:後藤大地

pipが怖いのがまさにこれです。PyPIは誰でもライブラリを追加できてしまうため、安全性の面では不安が残ります。

これに対して、condaの場合は、Anaconda Cloudで管理、検査されているので、安全性が高いと言われています。ただし、その分登録されているパッケージ数は少なく、使いたいパッケージがcondaにはなく、pipでしかインストールできない、ということがあります。この場合は仕方ありませんので、pipでインストールするしかないです。

この場合でも、安全性の確認と、パッケージ相互の依存関係を確認し、環境を破壊したり、ウイルスの侵入を防ぐ必要があります。

機械学習関連であれば、condaコマンドで事足りると思いますので、あまり問題は生じないとは思いますが、pipを使うときは要注意です。

目次