質問: Linux(ubuntu16.04)上でpythonを実行している際の疑問点です。 いろいろな参考書にある内容を同じPC(仮想Linux)上で実行しているときにいつも疑問に感じていることです。 基本以下のようにパスが通っているか確認しているのですが、 ``` $ pip show モジュール名 ``` ``` $ pip3 show モジュール名 ``` ``` >>>import sys >>>print(sys.path) ``` show モジュール名の結果が、以下の様にpython3.5を見ていたり、 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/1678db57f3338dc37fdcea6b092bef9d.png) ときにはpython3.7 python2.5のときもあります。 そのたびにパスを追加していかなければいけないものなのでしょうか。 それとも参考書をいろいろ行っていくうちにいろいろなバージョンのpythonが違った形で入ってその指定先が参考書ごとにばらばらになっているためなのでしょうか。 pipでインストールした際に権限がないなどエラーがでたために、sudoでroot権限側のlibに入ってしまっている、pip3を使ってインストールしてしまっている、anaconda3でインストールしてしまっているなどいろいろな理由が考えられますが、 いろいろな書籍を参考にいろいろモジュールをインストールしており、どういった管理をしていけばよいのか途方に暮れています。 理想はAnaconda3でcondaで管理して全てrootではなくdounuts(別ユーザ)で管理していきたいのが理想ですが、入れれなかったりなどありこのようになってしまいました。 なんとかモジュールをうまく管理する方法についてアドバイスどなたか頂けないでしょうか。よろしくお願い致します。
回答: 参考書やネットの記事通りにコマンドを打つと大抵そうなるので、「pip install ~でインストールしてください」とか「sudo pipで~」といった記述があっても、実際には自分の使う環境に合った方法でインストールする必要があります。 > > そのたびにパスを追加していかなければいけないものなのでしょうか。 > > > ちょっと意味の解釈に苦しみますが、「目的のライブラリが入っているパスをsys.pathにappendする」ということであれば、 pythonインタプリタごとにバージョンに対応したライブラリが入っているので、他のインタプリタのライブラリがインストールされているディレクトリのパスを追加しても正常に動作しません(もしかしたらなんとなく動いてしまうかもしれませんが)。 仮想環境をプロジェクトごとに切り分けて使うとスマートですが、管理しきれない、現時点でプロジェクトごとに分けたいというニーズはない、ということであれば、常用するものは一つに絞り込んではいかがですか。 anaconda3で仮想環境を一つ作り、必要なライブラリはすべてそこに入れ直す。今後pythonの開発やライブラリ管理はすべてその仮想環境をactivateした状態で行う。そういう方針にすれば良いだけです。