AWS / PHP / Python ちょいメモ

amazon web service , PHP, Python を使ったときのメモ。日本語でググってもわからなかった事を中心に。

pip ? conda ? パッケージマネージャーを意識しておこう

Python使いのアタナは pip派 ? conda派?

僕はWebフレームワーク使う事が多くAnaconda使ってないので pip派 です。 (easy_install は 数年来使ってない気がするので、はしょります)

一番名前をみるのが pip (pip on Pypi)。

そして次が conda かなと、個人的に思います。

一度作った Python環境 を、使い込んでいくと、たまに混ざってくるかなと思い、使い分けを提案してみます。

どちら派?

オススメは?

基本的には、この使い分けかと思います。

それを超える場合には、環境を複数使い分けたほうが有効と思います。(複数使い分け方法は、また別途紹介)

※どっち派というよりも、環境に応じて、メインのものを使おうねという趣旨かな


pip 使うのは

MacLinux の、OS同梱Pythonを使ってる人。

あと、Windowsで公式Pythonインストーラー使った人。

また、各種OSパッケージマネージャー (homebrew , chocolatey) を使った人かな。

こちらの方法は、特定のライブラリ・パッケージをメインで使う(僕の場合だと Django 使うとか) の場合に、よい方法です。

サーバー環境で、開発環境と本番環境を、同じ条件にすることが比較的用意かなと思うので。

conda 使うのは

Anaconda の Python 使ってる人。

conda コマンドを使えば、Anacondaが提供しているGUIの Anaconda Navigator とも連動するので違和感ないはず。

Anaconda は、科学計算 や 機械学習環境を手軽に構築するのに、よい方法です。


混ざっちゃうパターン

ちょっと前にかいたエントリー 日経ソフトウェア2020年5月号はPython本だね のような入門記事の流れで構築。

その後の「次の1手」を行った時に混ざりがちかなと思います。

# たまたま手にとって読んだというだけで、この本をディスってるわけではなく。それだけパターンがあるということです。あしからず。

例えば「特集1で Windows + Anaconda を構築」。

これでPython環境できたーとなった後に、Django 入れたいから pip を使う記事にそってインストールした。というケース。

Django は conda でインストールできないようなので、pipで入れるのはいいかもしれません。

ただ conda を知らずに pip 使いだして、conda で管理されてるパッケージ (例えば iPython) を pip でアップデートかけたりすると、次のような状態を作ったりします。

f:id:hidehara:20200419231426p:plain
iPython アップデート表示とずれたバイナリ

混ざったら?

前述のパターンの場合に、どうやって整合性をとるのかは、僕は知らないのです。(詳しい人教えて)

気づいた段階で、後から追加で初めたプロジェクトを、別環境に引っ越すのがいいかなって思います。

前述のパターンの場合は、Djangoの環境を、公式Pythonインストーラー使っての2つ目の環境作って引っ越すになるかと。


その他

なぜ Anaconda には pip も導入されてるのかなぁ?

便利に思う反面、混乱のもとにもなりそうに思うのですが。(裏で使ってたりするのかな?)

コマンドプロンプトが分かれてるのは、複数環境あっても独立的に使えて良いですよね。

f:id:hidehara:20200419231950p:plain
Anacondaメニュー

自ら PATH 通しちゃうと、元も子もないかもしれませんが。。。(うーん、考えること多いやw)