Comment revenir à python2 après qu'Anaconda ait défini python3 comme valeur par défaut?

18

Récemment, j'ai installé Anaconda3-2.5.0-Linux-x86_64.sh sur mon 15.04 et je me suis retrouvé avec ça!

:~$ python --version
Python 3.5.1 :: Anaconda 2.5.0 (64-bit)

:~$ python2 --version
Python 2.7.9

:~$ python3 --version
Python 3.5.1 :: Anaconda 2.5.0 (64-bit)

Lors des derniers instants d'installation, je suis entré quelque chose comme yespressé, et je suppose que ça devait faire quelque chose avec ça. (D'accord, ma faute, j'aurais dû gérer cela avec soin, mais j'ai besoin d'aide maintenant, pas de critiques).

Capture d'écran

AFAIK, cela va définitivement casser d'autres programmes. Qu'est-ce que je fais maintenant?


Ce que je pense pourrait fonctionner.

Cela peut-il être fait en utilisant des alias?

alias python=python2

Mais je n'en suis pas sûr.

sinistre
la source
Oui. utilisationalias python=python2
Mostafa Ahangarha
AFAIK, cela va définitivement casser d'autres programmes. Qu'est-ce qui vous fait penser cela? Si Anaconda définit Python 3 par défaut, c'est probablement pour une raison.
fkraiem
J'ai déjà ruiné l'un de mes projets qui a été écrit pour 2.x, et la conversion par défaut en 3.x n'est pas encouragée, d'autant plus que de nombreux packages fonctionnent sur 2.x!
sinistre
C'est à ce moment-là que vous êtes très heureux d'avoir adopté l'approche professionnelle et d'avoir eu un clone de votre disque de démarrage de pré-installation pour éviter que cela ne devienne une perte de temps importante. Veuillez voir ma réponse ci-dessous. Je pense que votre méthode d'installation a provoqué le problème. Donc, si cela m'arrivait, je reviendrais et réessayerais. Le temps total serait inférieur à un jour pour déterminer s'il est viable. Dans mon cas, comme vous pouvez le voir, je suis à la fin des vérifications, je peux donc maintenant progresser pour voir si cela en vaut la peine en premier lieu. Il a fallu quelques jours pour s'assurer que cela n'avait pas causé de problème, et les travaux de recherche sont en cours.
SDsolar
quant à la spécification de la version de Python, assurez-vous de connaître exactement l'effet d'entraînement que cela peut avoir sur l'ensemble de votre système. À moins que vous ne jouiez, cela nécessitera vraiment un processus de vérification complet si vous modifiez les cibles des which pythonrésultats de shebang par défaut . Cela prend juste un peu de temps à l'avance pour éviter de découvrir plus tard que vous vous êtes peint au coin de devoir réécrire certains de vos utilitaires. Le mieux est de laisser les choses fonctionner avec les valeurs par défaut, sauf si vous avez beaucoup de temps libre.
SDsolar

Réponses:

18

J'ai parcouru l'installation dans une machine virtuelle, et les choses suivantes se sont produites.

  1. Le programme d'installation demande un emplacement d'installation. La valeur par défaut est /home/myuser/anaconda3.
  2. À la fin, on vous demandera

    Python 3.5.1 :: Continuum Analytics, Inc.
    creating default environment...
    installation finished.
    Do you wish the installer to prepend the Anaconda3 install location
    to PATH in your /home/myuser/.bashrc ? [yes|no]
    [no] >>> yes
    
    Prepending PATH=/home/myuser/anaconda3/bin to PATH in /home/myuser/.bashrc
    A backup will be made to: /home/myuser/.bashrc-anaconda3.bak

Pour restaurer l'ancien comportement, allez dans votre répertoire personnel et faites

mv .bashrc-anaconda3.bak .bashrc

puis démarrez un nouveau shell.

Comme vous le suggérez, vous pourriez alias python=python2, mais je trouve cela un peu bizarre. je voudrais

  1. Restaurer l'original .bashrc
  2. Créer (s'il n'existe pas) ~/bin
  3. Lien ln -s ~/anaconda3/bin/python3 ~/bin/python3
  4. [Ajouter $HOME/binà $PATH] (devrait déjà être défini par défaut par ~/.profile)
  5. Se reconnecter.

De cette façon, l'appel python3démarrera celui d'Anaconda.


Un point important est que l'original /usr/bin/pythonest toujours là et qu'il pointe toujours python2.7. Les ramifications d'avoir python->python3sur votre chemin dépendent de la façon dont un script spécifique est appelé.

Si le shebang #!/usr/bin/pythonest utilisé, comme c'est probablement le cas dans tous les exécutables livrés avec Ubuntu, rien ne changera. D'autre part, pour une meilleure portabilité #!/usr/bin/env pythonest parfois utilisée, ce qui va maintenant provoquer python3.5l'appel.

Nephente
la source
3
"4. Ajoutez $ HOME / bin à $ PATH" .. déjà fait par défaut ~/.profile- juste une reconnexion est nécessaire après la création ~/bin.
muru
@muru C'est vrai, merci. Ajouté à la réponse.
Nephente
ok, ça a marché, merci! Juste pour mettre cela en évidence, que j'avais déjà installé python 3.4.3 (et que pip et pip3 y étaient tous deux associés), j'ai maintenant 2.7, 3.4, 3.5. Maintenant, je vais réinstaller pip pour le pointer vers 3.5!
sinistre
Anaconda est livré avec son propre gestionnaire de paquets appelé conda. Il gère également les environnements virtuels. Je l'utilise pour installer des packages au lieu de pip.
Nephente
7

Bonne réponse ici: /programming/24405561/how-to-install-2-anacondas-python-2-7-and-3-4-on-mac-os-10-9

conda create -n python2 python=2.7 anaconda

puis, pour basculer:

source activate python2
Patrick Dolan
la source
Si vous en avez besoin, vous pourriez très bien avoir des problèmes beaucoup plus profonds. Si votre système est important, effectuez une vérification complète de toutes les commandes et / ou utilitaires dépendants de Python. Avertissement juste.
SDsolar
3

Dans le cas où quelqu'un cherche à changer sa version par défaut de python en 2.7 après l'avoir gâché (en changeant la version par défaut en: anaconda ou python 3) et en se retrouvant avec un logiciel non fonctionnel, suivez simplement ce lien: Lien avec les instructions pour changer la valeur par défaut version python.

Ubdus Samad
la source
Si un changement de système tourne mal, assurez-vous de pouvoir l'annuler. Assurez-vous que vous disposez de bonnes sauvegardes d'image système afin que les modifications majeures puissent être rapidement annulées si elles ne se déroulent pas comme prévu. Pensez professionnel. Si vous utilisez des techniques amateurs, vous ne pouvez pas vous attendre à des résultats professionnels.
SDsolar
1

Cela a fonctionné pour moi mais pour Miniconda, cela devrait également fonctionner pour Anaconda mais veuillez me corriger si je me trompe.

Obtenez d'abord votre variable $ PATH :

echo $PATH

Cela ressemblera probablement à ceci (chemin miniconda avant tout le reste):

/home/your_user/miniconda3/bin:$PATH

Copiez ce chemin au bas de votre fichier ~ / .bashrc , mais avec Miniconda à la fin au lieu du début du chemin comme ceci:

export PATH="$PATH:/home/your_user/miniconda3/bin"

Le système recherchera les programmes au début de la variable $ PATH avant le dossier miniconda3 / bin.

Il devrait restaurer les versions des programmes précédents que vous aviez comme python.

À partir de Conda 4.4, ils ont changé le code ajouté à ~ / .bashrc. Maintenant, pour réaliser la même chose, éditez ~ / .bashrc et commentez la ligne ci-dessous comme pour empêcher la couche de base (environnement de base) de s'activer dans chaque terminal. Pas besoin de toucher une autre partie des nouveaux ajouts. Je ne sais pas quelle signification CONDA_CHANGEPS1=falsea, mais je n'ai rencontré aucun problème jusqu'à présent.

   # CONDA_CHANGEPS1=false conda activate base

Et pendant que vous ne verrez pas le dossier Conda dans le chemin plus, la condacommande continue de fonctionner normalement, et original python, python3et les pipenvcommandes indiquerai aussi.

pedrodcb
la source
Votez parce que je pense que vous avez raison. C'est bien d'avoir dans la base de données. Cependant, puis-je vous demander d'être un peu plus précis quant aux numéros de version des logiciels concernés?
SDsolar
Merci, et je ne pense pas vraiment que la version du programme soit importante, cela devrait toujours fonctionner. À l'époque, mon installateur était cependant dans la version suivante: Miniconda3 4.3.14. Est ce que ça aide?
pedrodcb
0

Voici ma réponse, et elle peut ou non être la réponse spécifique réelle à ce que vous avez fait à votre propre système.

Cependant, je suis dans une situation similaire et j'avais la même préoccupation.

J'utilise Ubuntu 16.04 LTS et Python 2.7.12, et j'ai récemment installé Anaconda.

Alors maintenant, quand je vais sur la ligne de commande et que pythonje tape, cela va toujours à mon installation Python2.

Confirmé par cette sequence:

$which python
/usr/bin/python     <  Catch-all for max compatibility
$python
Python 2.7.12 . . etc

Donc dans mon cas, anacondacela ne pose PAS de problème avec mes shebangs Python2 par défaut.

En fin de compte, telle est la question.

Lorsque vous demandez au système, which pythonvous pouvez faire confiance à la chaîne correcte à utiliser dans la première ligne de vos programmes Python de style ligne de commande.

Dans ma situation, tous mes mêmes fichiers de script de ligne de commande Python continuent de s'exécuter très bien.

J'ai tendance à écrire Python dans un mode compatible 3. Telles que l'utilisation de parenthèses autour de mes instructions d'impression. Mais je résiste activement à un changement majeur du système qui pourrait provoquer des problèmes avec les programmes Python 2 durement combattus. Python 3 sonne bien mais inutile pour mes besoins. Python 2 est un langage incroyable.

Mon environnement informatique ne me permet pas de revenir en arrière et de réorganiser les processus passés qui ont été réglés pour fonctionner correctement sans prendre un temps record, car je devrais revenir en arrière et déterminer où je l'ai utilisé en premier lieu.


Conclusion pour moi: lors de l'installation anacondapour une utilisation future, je n'ai eu aucun ralentisseur ni problème.


C'est le point où je suis dans le processus ... Je viens de terminer la recertification de tous les logiciels passés.


La prochaine étape consiste à réellement utiliser certains des trucs sympas promis dans le package.


Donc, je dois soupçonner que d'autres simplement installer anacondail doit y avoir plus à votre situation.

D'après mon expérience, ce n'est pas du tout un problème.

SDsolar
la source
Pour info, j'ai un poste de travail scientifique complet, travaillant sur la dynamique solaire. Également sur les éphémères et les interactions satellites. Cela DOIT fonctionner. Donc je ne suis pas juste un poney à un tour dans tout ça. J'installe une chose à la fois, puis vérifie que tout avant que cela fonctionne. Je passe ensuite au suivant. SciPy, Matplotlab, etc. (Ma préférence pour le traçage est gnuplot). Veuillez donc comprendre que je soumets cette réponse en tant que point de données à partir d'un système de travail 24x7 en direct dans un environnement de recherche universitaire. Ce n'est pas un environnement de test - c'est une production quotidienne.
SDsolar
Aussi, comme je l'ai mentionné dans un commentaire ci-dessus, PENSEZ PROFESSIONNEL. Ces systèmes sont utilisés par des chercheurs de très haut niveau partout dans le monde. -> Assurez-vous que votre disque de démarrage a un clone avant d'effectuer des mises à niveau majeures du système. La ddcommande est rapide et facile, et les connexions SATA sont faciles. Il n'y a aucune raison d'éviter de protéger votre système. Faites juste attention à ce qu'à chaque étape, vous puissiez annuler tous les changements qui pourraient survenir. Les disques durs sont beaucoup moins chers que votre temps. (sauf si vous ne pensez pas que ce soit vrai). Les fonds de subvention plus un resserrement du temps devraient être suffisamment incitatifs.
SDsolar