web-dev-qa-db-fra.com

Utiliser l'installation Python par défaut plutôt que l'installation Anaconda lors de l'appel du terminal

J'ai récemment installé la version anaconda de python. Maintenant, lorsque je tape python dans le terminal, cela ouvre la distribution anonconda plutôt que la distribution par défaut. Comment l'obtenir pour qu'il utilise la version par défaut de la commande python sous linux (Ubuntu 12.04)? 

39
Michael

anaconda ajoute le chemin d'accès à votre .bashrc afin qu'il soit trouvé en premier. Vous pouvez ajouter le chemin d'accès à votre python par défaut à .bashrc ou supprimer le chemin d'accès à anaconda si vous ne souhaitez pas l'utiliser.

Vous pouvez également utiliser le chemin d'accès complet /usr/bin/python dans bash pour utiliser l'interpréteur python par défaut.

Si vous laissez votre fichier .bashrc en l'état, toute commande que vous exécutez avec python utilisera l'interpréteur anaconda. Si vous le souhaitez, vous pouvez également utiliser une variable alias pour chaque interpréteur. 

Vous verrez quelque chose comme export PATH=$HOME/anaconda/bin:$PATH dans votre fichier .bashrc.

En résumé, si vous souhaitez utiliser anaconda comme principal interprète au quotidien, utilisez le chemin complet de votre python par défaut ou créez une variable alias, si vous le souhaitez, supprimez le export PATH=.... depuis bashrc et utilisez le chemin complet vers l'interpréteur anaconda python.

46
Padraic Cunningham

Après avoir essayé toutes les suggestions jusqu'à présent, je pense que la modification de la déclaration d'exportation dans ~/.bashrc, comme semble le suggérer Piotr Dobrogost, est la meilleure option compte tenu de ce qui suit:

  • Si vous supprimez l'intégralité de l'instruction, vous devez utiliser des chemins d'accès complets pour les fichiers binaires conda.
  • Utiliser les liens conda 4.4.10 dans le répertoire anaconda/bin/pointe vers les fichiers binaires du même répertoire, pas ceux du système dans/usr/bin.
  • En utilisant cette approche, vous obtenez les programmes système pour tout ce qui a déjà été inclus dans $ PATH, ainsi que pour ceux spécifiques à anaconda sans utiliser de chemins complets.

Donc, dans ~/.bashrc au lieu de

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

on utiliserait

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

J'ai fait face au même problème et vous pouvez faire ce qui suit Allez dans votre base et vous trouverez un type de ligne similaire

export PATH=~/anaconda3/bin:$PATH

ce que vous faites est commenter et taper à la place 

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

ou quel que soit votre chemin. Cela a fonctionné pour moi

5
Pulkit Gera

Il existe des raccourcis python, python2 et python2.7 dans les répertoires /home/username/anaconda/bin/ et /usr/bin/. Ainsi, vous pouvez supprimer l'un d'entre eux d'un dossier et l'utiliser pour l'autre. Je veux dire, Si vous supprimez le raccourci python2 du répertoire anaconda, vous aurez, Python pour la version anaconda et python2 pour la version par défaut du terminal.

1
nazmul shuvo

J'ai constaté que même si je supprime export=.../anaconda3/bin:$PATH, il y a toujours .../anaconda3/envs/py36/bin (mon environnement virtuel dans anaconda) dans PATH et Shell utilise toujours l'anaconda python.

Donc, je export PATH=/usr/bin:$PATH (/usr/bin est l'endroit où réside le système python). Bien que thers soit déjà /usr/bin inPATH, nous le faisons avant le chemin d’Anaconda, puis Shell utilisera le python système lorsque vous saisissez python, python3.6, pip, pip3 .... 

Vous pouvez revenir à anaconda en utilisant le pseudonyme mentionné ci-dessus, ou revenir à anaconda en commentant par le commentaire export PATH=/usr/bin:$PATH

1
RichardYY

J'utilise Anaconda avec parcimonie pour construire des packages multi-plateformes, mais je ne souhaite pas l'utiliser comme pilote quotidien pour python. Ce que j’ai adopté pour les projets Anaconda, Ruby et Node, c’est d’utiliser le sand-boxing d’environnement, qui masque la fonctionnalité derrière une fonction loin de votre chemin jusqu’à ce que vous en ayez spécifiquement besoin. J'ai d'abord appris à ce sujet de ces deux dépôts de github:

https://github.com/benvan/sandboxd

https://github.com/maximbaz/dotfiles

J'ai un fichier de fonctions de sandboxing qui ressemble à ceci:

.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

Dans mon .zshrc, je crée ma (mes) fonction (s) sandbox:

sandbox_hook conda conda

Cette commande transforme l'exécutable conda normal en:

conda () {
    sandbox conda
    conda $@
}

L'avantage supplémentaire de cette technique réside dans le fait qu'elle accélère les temps de chargement du shell, car la recherche de plusieurs scripts d'encapsuleur (par exemple, nvm, rvm, etc.) peut ralentir le temps de démarrage de votre shell.

Cela m'a aussi causé un problème quand Anaconda a installé son exécutable python3 sous la forme python par défaut, ce qui casse de nombreux scripts python hérités, mais il s'agit d'un problème distinct. Utiliser le sandboxing comme ceci me fait clairement comprendre que j'utilise le python d'Anaconda au lieu de celui par défaut du système.

0
cbcoutinho

Anaconda 3 ajoute plus qu'une simple ligne dans mon .bashrc . Cependant, il sauvegarde également le fichier .bashrc d'origine en un fichier .bashrc-anaconda3.bak Ma solution a donc été d'échanger les deux.

0
Marco