it-swarm.com.de

Verwenden Sie die Standard-Python-Installation anstelle der Anaconda-Installation, wenn Sie vom Terminal aus aufgerufen wird

Ich habe kürzlich die Anaconda-Version von Python installiert. Wenn ich jetzt python in das Terminal eingebe, wird die anonconda -Distribution statt der Standarddistribution geöffnet. Wie kann ich die Standardversion für den Befehl python in Linux (ubuntu 12.04) verwenden? 

39
Michael

anaconda fügt den Pfad zu Ihrem .bashrc hinzu, damit er zuerst gefunden wird. Sie können den Pfad zu Ihrem Standard-Python zu .bashrc hinzufügen oder den Pfad zu Anaconda entfernen, wenn Sie ihn nicht verwenden möchten.

Sie können auch den vollständigen Pfad /usr/bin/python in bash verwenden, um den Standard-Python-Interpreter zu verwenden.

Wenn Sie Ihre .bashrc-Datei unverändert lassen, verwendet jeder Befehl, den Sie mit python ausführen, den Anaconda-Interpreter. Wenn Sie möchten, können Sie auch eine alias für jeden Interpreter verwenden. 

Sie sehen etwas wie export PATH=$HOME/anaconda/bin:$PATH in Ihrer .bashrc-Datei.

Wenn Sie also Anaconda als alltäglichen Interpreter für den Alltag verwenden möchten, verwenden Sie den vollständigen Pfad zu Ihrem Standard-Python oder erstellen eine alias. Wenn Sie es andersherum wollen, entfernen Sie den export PATH=.... von bashrc und verwenden Sie den vollständigen Pfad zum Anaconda-Python-Interpreter.

46

Nachdem ich alle Vorschläge ausprobiert habe, denke ich, dass die Änderung der Export-Anweisung in ~/.bashrc, wie Piotr Dobrogost zu vermuten scheint, die beste Option ist, wenn man Folgendes bedenkt:

  • Wenn Sie die gesamte Anweisung entfernen, müssen Sie vollständige Pfade für Conda-Binaries verwenden.
  • Die Verwendung von conda 4.4.10 verweist im Verzeichnis anaconda/bin/auf Binärdateien in demselben Verzeichnis, nicht auf die Systemdateien in/usr/bin.
  • Mit diesem Ansatz erhalten Sie die Systemprogramme für alle, die zuvor in $ PATH enthalten waren, sowie die für Anaconda spezifischen, ohne vollständige Pfade zu verwenden.

Also in ~/.bashrc statt

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

man würde verwenden

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

Ich war mit dem gleichen Problem konfrontiert und Sie können Folgendes tun: __. Gehen Sie in Ihre Basisstation, und Sie werden eine ähnliche Linie finden

export PATH=~/anaconda3/bin:$PATH

was Sie tun, ist es zu kommentieren und stattdessen zu schreiben 

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

oder wie auch immer dein Weg ist. Das hat für mich geklappt

5
Pulkit Gera

Es gibt python, python2 und python2.7 Verknüpfungen im /home/username/anaconda/bin/ und /usr/bin/ Verzeichnis. Sie können also einen beliebigen Ordner aus einem Ordner löschen und für den anderen verwenden. Ich meine, Wenn Sie python2 Verknüpfung aus dem Anaconda-Verzeichnis löschen, haben Sie Python für die Anaconda-Version und python2 für die Standardversion im Terminal.

1
nazmul shuvo

Obwohl ich export=.../anaconda3/bin:$PATH entferne, habe ich festgestellt, dass PATH noch .../anaconda3/envs/py36/bin (meine virtuelle Umgebung in anaconda) ist, und Shell weiterhin Anaconda Python verwendet.

Also export PATH=/usr/bin:$PATH (/usr/bin ist der Ort, an dem sich System-Python befindet). Obwohl thers bereits /usr/bin inPATH ist, machen wir es vor dem Pfad von anaconda. Dann verwendet Shell den Systempython, wenn Sie python, python3.6, pip, pip3 .... eingeben. 

Sie können zu Anaconda zurückkehren, indem Sie einen Alias ​​verwenden, wie oben erwähnt, oder Anaconda wieder durch Kommentar export PATH=/usr/bin:$PATH.

1
RichardYY

Ich verwende Anaconda sparsam, um plattformübergreifende Pakete zu erstellen, aber ich möchte es nicht als meinen täglichen Treiber für Python verwenden. Was ich für Anaconda-, Ruby- und Node-Projekte angenommen habe, ist die Verwendung von Umgebungssandboxen, bei denen die Funktionalität hinter einer Funktion im Wesentlichen verborgen wird, bis Sie sie speziell benötigen. Ich habe es zuerst von diesen beiden Github-Repos erfahren:

https://github.com/benvan/sandboxd

https://github.com/maximbaz/dotfiles

Ich habe eine Datei mit Sandbox-Funktionen, die folgendermaßen aussieht:

.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 \[email protected] }"
}

.zshrc

In meinem .zshrc erstelle ich meine Sandbox-Funktion (en):

sandbox_hook conda conda

Dieser Befehl wandelt die normale conda-Programmdatei in Folgendes um:

conda () {
    sandbox conda
    conda [email protected]
}

Ein weiterer Vorteil der Verwendung dieser Technik ist, dass die Ladezeiten von Shell beschleunigt werden, da das Laden einer Reihe von Wrapper-Skripts (z. B. nvm, rvm usw.) die Startzeit der Shell verlangsamt.

Es störte mich auch, dass Anaconda seine ausführbare Python3-Datei standardmäßig als python installiert hat, was eine Menge alter Python-Skripts bricht, aber das ist ein anderes Problem. Wenn Sie Sandboxing wie dieses verwenden, wird mir explizit bewusst, dass ich Anacondas Python anstelle des Systemstandards verwende.

0
cbcoutinho

Anaconda 3 fügt mehr als eine einfache Zeile in meiner .bashrc ..__ hinzu. Sie sichert jedoch auch die ursprüngliche .bashrc-Datei in eine .bashrc-anaconda3.bak Meine Lösung bestand also darin, die beiden auszutauschen.

0
Marco