51006


周りに助けてくれる方がおらず、苦戦しています。  
今までanaconda上でpythonを使っていたのですが、macOSに最初から入っているpythonを使わなければなりません。  
現在優先的にannacondaのpythonが使用されるように設定されています。

プログラムの先頭にshebangを書くことでプリインストールされているpythonでコードが実行できると理解しております。

[code]

    #!/usr/bin/python
    
[/code]

しかし、その先のモジュールを実行する際に、全てanaconda上でインストールしてしまっているために、エラーが出てしまいます。  
ターミナル上でインストールしようとしても、以下のように返されてしまいます。

[code]

    $ pip install httplib2
    Requirement already satisfied: httplib2 in ./anaconda/lib/python3.6/site-packages (0.12.0)
    
[/code]

anacondaの外でインストールし直そうとしているのですが、一人では解決することができませんでした。  
かなり初歩的な問題で大変恐縮ですが、ご教授いただけましたら幸いです。  
どうぞよろしくお願いいたします。


CC BY-SA 4.0
2018-12-07T09:46:29.583
51002
2018-12-07T12:23:36.503
27030
question
python macos unix anaconda
anacondaの外で環境構築したい


環境変数 PATH を調整することで、システムにインストールされている Python の環境と Anaconda の Python
の環境を分けることができます。

[標準のインストール方法](https://conda.io/docs/user-guide/install/index.html#installing-
conda-on-a-system-that-has-other-python-installations-or-
packages)を使っていれば、Anaconda のバイナリを認識するために `~/.bash_profile` や `~/.bashrc`
などのファイルで PATH に Anaconda のパスを追加しているはずです。この部分を無効化すれば、`python` や `pip` などは
Anaconda のものではなく、通常はシステムのものになるはずです（Anaconda とシステム以外にも Python
をインストールしている場合は別途確認が必要です）。

現状の PATH を確認するには、以下のシェルコマンドを使ってください。

[code]

    echo $PATH
    
[/code]

また、今使っている `python` や `pip` がどこにあるか知るためには `type` コマンドが便利です。

[code]

    type pip
    
[/code]

`~/.bash_profile` で Anaconda の PATH を追加している場合、デフォルトでは Anaconda
が選択されるようになっています。デフォルトでシステムの Python
が選択されるように変えるためには、一旦この追加部分を削除してシェルを再起動するだけで良いです。別途「Anaconda の PATH
を追加する」というシェル関数を用意しておくと切り替えができるので便利かもしれません。

また、デフォルトでは Anaconda を使い時々システムのものを使いたいということであれば、PATH はそのままに、alias を使ってシステムの
Python の名前を変えてしまうという方法でも良さそうです。

## 別解？: Anaconda の仮想環境

しかしそもそも、なぜシステムに標準インストールされた Python 処理系を使わなければいけないのでしょうか。

もし「バージョンが違う Python を使いたい」とか「他のライブラリが入った形で利用したい」ということであれば、わざわざシステムの Python
に戻すのではなく、`conda create` で作ることができる Anaconda
の仮想環境を利用する方が筋が良さそうです。大まかな使い方はドキュメントに書かれています: [Managing
Python](https://conda.io/docs/user-guide/tasks/manage-python.html)。


CC BY-SA 4.0
2018-12-07T10:28:00.897
51004
2018-12-07T12:23:36.503
2018-12-07T12:23:36.503
19110
19110
51002
answer


質問のように、AnacondaのPythonが優先的に使用されるのは、Anaconda の `bin` ディレクトリが、環境変数 PATH
に追加されているためです。MacOS の場合は、`~/.bash_profile`に次のように Anaconda
のインストールの時に追加されていると思います。

[code]

    export PATH="/dir_to_anaconda/anaconda3/bin:$PATH"
    
[/code]

Anacondaは、conda-4.4.0 から、Anaconda の `bin` ディレクトリを環境変数 PATH
に追加するのを推奨しなくなっています。（参照 [Release notes 4.4.0](https://conda.io/docs/release-
notes.html#id71)）

そのかわりに、`~/.bash_profile`に、次のように設定して、`conda
activate`でAnacondaの環境を起動して使用することを推奨しています。

[code]

    . /dir_to_anaconda/anaconda3/etc/profile.d/conda.sh
    
[/code]

この際、推奨どおりに変更しましょう。現状のままだと、Anaconda
の`bin`ディレクトリーにインストールされている`openssl`等の実行ファイルがシステムの実行ファイルを乗っ取っています。Anacondaしか使わないのであれば問題になることは少ないですが、例えば
node.js のような他のプログラム言語を使って開発しようとすると必ず問題が発生します。

なお、Anaconda推奨の`conda.sh`でなく、以下のようにエイリアスを設定しても大丈夫です。こちらは、以前から使えていました。下の例では、`conda_activate`としていますが、他のコマンドと当たらなければ`ca`というような短い名前をつけることができるので便利です。

[code]

    alias conda_activate=". /dir_to_anaconda/anaconda3/bin/activate"
    
[/code]


CC BY-SA 4.0
2018-12-07T11:53:42.250
51006
2018-12-07T11:59:16.580
2018-12-07T11:59:16.580
15171
15171
51002
answer