web-dev-qa-db-ja.com

ターミナルから呼び出されたときにAnacondaのインストールではなく、デフォルトPythonを使用

最近、pythonのanacondaバージョンをインストールしました。ターミナルにpythonと入力すると、デフォルトのディストリビューションではなく、anoncondaディストリビューションが開きます。 Linux(ubuntu 12.04)でコマンドpythonのデフォルトバージョンを使用するにはどうすればよいですか?

45
Michael

anacondaは.bashrcにパスを追加するため、最初に検出されます。デフォルトのpython to .bashrcにパスを追加するか、そうでない場合はanacondaへのパスを削除できます使いたくない.

Bashでフルパス/usr/bin/pythonを使用して、デフォルトのpythonインタープリターを使用することもできます。

.bashrcファイルをそのままにしておくと、pythonを使用して実行するコマンドはanacondaインタープリターを使用します。必要に応じて、各インタープリターにaliasを使用することもできます。

export PATH=$HOME/anaconda/bin:$PATHファイルに.bashrcのようなものが表示されます。

したがって、基本的に、日常のメインインタープリタとしてanacondaを使用する場合は、デフォルトのフルパスを使用しますpythonまたはaliasを作成します。 export PATH=...bashrcから、anacondaへのフルパスを使用してpythonインタープリター。

52

これまでのすべての提案を試したので、Piotr Dobrogostが示唆しているように、〜/ .bashrcのexportステートメントを変更することは、次のことを考慮した最良のオプションだと思います。

  • ステートメント全体を削除する場合は、condaバイナリのフルパスを使用する必要があります。
  • ディレクトリanaconda/bin /でconda 4.4.10リンクを使用すると、/ usr/binのシステムバイナリではなく、同じディレクトリのバイナリをポイントします。
  • このアプローチを使用すると、以前に$ PATHに含まれていたすべてのシステムプログラムと、フルパスを使用せずにanaconda固有のシステムプログラムを取得できます。

そのため、〜/ .bashrcではなく

# added by Anaconda3 4.3.0 installer
export PATH="/home/user/anaconda3/bin:$PATH"

使用するだろう

export PATH="$PATH:/home/user/anaconda3/bin"
14
Asta86

私は同じ問題に直面し、あなたはあなたのbashrcに次のGoをすることができます、あなたは同様の種類の行を見つけるでしょう

export PATH=~/anaconda3/bin:$PATH

あなたがすることはコメントアウトし、代わりに入力することです

alias pyconda='~/anaconda3/bin/python3'

またはあなたのパスが何であれ。これは私のために働いた

6
Pulkit Gera

python2python2.7の両方のディレクトリには、python/home/username/anaconda/bin//usr/bin/のショートカットがあります。そのため、1つのフォルダーからそれらのいずれかを削除し、それを他のフォルダーに使用できます。つまり、anacondaディレクトリからpython2ショートカットを削除すると、python anacondaバージョンとpython2がターミナルのデフォルトバージョンになります。

1
nazmul shuvo

export=.../anaconda3/bin:$PATHを削除しても、PATHには.../anaconda3/envs/py36/bin(anacondaの仮想環境)があり、シェルは引き続きanaconda pythonを使用していることがわかりました。

だから私はexport PATH=/usr/bin:$PATH/usr/binはシステムpythonが存在する場所です)。 thersはすでに/usr/bin in PATHですが、anacondaのパスの前に検索されます。その後、pythonpython3.6をキー入力すると、シェルはシステムpythonを使用します、pippip3 ....

上記のようなエイリアスを使用してanacondaに戻るか、コメントexport PATH=/usr/bin:$PATHを使用してデフォルトで再びanacondaに戻ります。

1
RichardYY

クロスプラットフォームパッケージをビルドするためにAnacondaを控えめに使用していますが、Pythonの毎日のドライバーとして使用したくありません。 Anaconda、Ruby、およびNodeプロジェクトに採用したのは、環境のサンドボックス化を使用することです。これは、特に必要になるまで、機能の背後にある機能をパスから隠します。これらの2つのgithubリポジトリからそれについて:

https://github.com/benvan/sandboxd

https://github.com/maximbaz/dotfiles

次のようなサンドボックス関数のファイルがあります。

.zsh/sandboxd.zsh:

#!/bin/zsh
# Based on
#   https://github.com/maximbaz/dotfiles/.zsh/sandboxd.zsh
# which was originally adapted from:
#   https://github.vom/benvan/sandboxd

# Start with an empty list of all sandbox cmd:hook pairs
sandbox_hooks=()

# deletes all hooks associated with cmd
function sandbox_delete_hooks() {
    local cmd=$1
    for i in "${sandbox_hooks[@]}";
    do
        if [[ $i == "${cmd}:"* ]]; then
            local hook=$(echo $i | sed "s/.*://")
            unset -f "$hook"
        fi
    done
}

# prepares environment and removes hooks
function sandbox() {
    local cmd=$1
    # NOTE: Use original grep, because aliased grep is using color
    if [[ "$(type $cmd | \grep -o function)" = "function" ]]; then
        (>&2 echo "Lazy-loading '$cmd' for the first time...")
        sandbox_delete_hooks $cmd
        sandbox_init_$cmd
    else
        (>&2 echo "sandbox '$cmd' not found.\nIs 'sandbox_init_$cmd() { ... }' defined and 'sandbox_hook $cmd $cmd' called?")
        return 1
    fi
}

function sandbox_hook() {
    local cmd=$1
    local hook=$2

    #echo "Creating hook ($2) for cmd ($1)"
    sandbox_hooks+=("${cmd}:${hook}")

    eval "$hook(){ sandbox $cmd; $hook \$@ }"
}

.zshrc

私の.zshrcサンドボックス化された関数を作成します。

sandbox_hook conda conda

このコマンドは、通常のconda実行可能ファイルを次のように変換します。

conda () {
    sandbox conda
    conda $@
}

このテクニックを使用すると、多くのラッパースクリプト(例:nvmrvmなど)を使用するとシェルの起動時間が遅くなるため、シェルの読み込み時間が短縮されます。

また、Anacondaがpython3実行可能ファイルをデフォルトでpythonとしてインストールしたため、多くのレガシーpythonスクリプトが壊れますが、それは別の問題です。このようにサンドボックスを使用すると、システムのデフォルトの代わりにAnacondaのpythonを使用していることを明示的に認識しています。

0
cbcoutinho

Anaconda 3は、.bashrcに単純な行以上のものを追加します。ただし、元の.bashrcファイルも.bashrc-anaconda3.bakにバックアップされるため、私の解決策は2つを交換することでした。

0
Marco