2015-04-26 2 views
11

Existe-t-il un moyen de forcer la console à utiliser la version système de python (avec toutes les bibliothèques système) dans un environnement donné? J'ai une conda activée par défaut dans mon shell, ce qui peut être un peu ennuyeux, parce que si j'essaye d'exécuter une application python système, elle obtient une version différente de python à ce qu'elle attend (python vaut toujours 2.7 par défaut). sur * buntu), et souvent ne fonctionnera pas. Je voudrais que la racine env de conda soit juste une redirection vers l'installation du système python.Autoriser l'utilisation du système python dans conda env?

+0

Pourriez-vous donner un exemple d'application/expérience, je n'ai pas vu cela. –

+0

@AndyHayden: J'utilise python 3.4 dans ma racine env, et donc tout paquet ubuntu qui a '! #/Bin/env python' au début du script principal échouera s'il est exécuté depuis la ligne de commande (parce que il attend python 2, qui est toujours la valeur par défaut). Mes '.profile' et' .zshrc' ont tous deux les lignes '# ajoutées par le programme d'installation de Miniconda3 3.9.1; export PATH = "/ home/naught101/miniconda3/bin: $ PATH" 'dans eux, donc conda est activé dans tous les shells par défaut. – naught101

+0

Pensez-vous que c'est un bug dans ces applications? Quelles applications? Pouvez-vous installer cette application avec conda (plutôt que apt-get)? –

Répondre

1

Vous devez éditer toutes les commandes d'exécution du shell de l'utilisateur, telles que votre fichier .bashrc, pour ajouter le répertoire bin d'anaconda au chemin export PATH=~/anaconda/bin:$PATH, tandis que dans vos commandes d'exécution racine, ajoutez export PATH=$PATH:~/anaconda/bin. Dans les deux cas, vous aurez accès à la commande conda. Vous pouvez vérifier quel python sera exécuté en tapant $env python --version. Vous pouvez également vérifier quelles autres versions seraient disponibles et leur ordre de priorité (si l'autre est supprimée) en utilisant $type -a python. Bien sûr, assurez-vous que vos fichiers python exécutables ont #!/usr/bin/env python et non une autre route directe vers un exécutable python. Pour plus d'informations, Google BASH Shell recherche des requêtes comme http://www.cyberciti.biz/tips/an-example-how-shell-understand-which-program-to-run-part-ii.html.

+0

@ naught101, je crois ce qui est expliqué ci-dessus fonctionnerait: si vous modifiez les commandes d'exécution qui sont exécutées sous l'utilisateur root pour que le chemin exporté lit 'export PATH = « $ PATH:/home/naught101/miniconda3/bin » '(ils résideraient sous la racine et la maison de l'utilisateur via' $ cd ~ '), tout fichier/script/etc qui est exécuté sous root chercherait le python par défaut avant votre version de conda comme expliqué et vous devriez pouvoir vérifier en utilisant les méthodes ci-dessus. – 5upa

+1

Ouais, il ne fait par défaut python système au démarrage d'un shell, ce qui est bon, mais si vous 'la source activer blah' puis' deactivate' source, le python env racine Conda devient la valeur par défaut à nouveau, jusqu'à ce que vous redémarrez le shell . – naught101

+1

@ naught101 vous pouvez essayer ceci: 'export PATH = $ (conda ..désactiver) ' – phil

0

enlever simplement le python de symlink ~/miniconda3/bin/ semble faire le travail.

$ which python   
/home/naught101/miniconda3/bin/python 
$ rm /home/naught101/miniconda3/bin/python 
$ which python        
/usr/bin/python 
$ source activate science     
discarding /home/naught101/miniconda3/bin from PATH 
prepending /home/naught101/miniconda3/envs/science/bin to PATH 
(science)$ which python   
/home/naught101/miniconda3/envs/science/bin/python 
(science)$ source deactivate      
discarding /home/naught101/miniconda3/envs/science/bin from PATH 
$ which python  
/usr/bin/python 

Jusqu'à présent, cela ne semble pas avoir causé de problèmes. Malheureusement, la même chose ne fonctionne pas pour ~/miniconda/bin/python3, car conda l'exige lors du passage à d'autres environnements utilisant la même version python. Cependant, celui-ci n'a pas causé autant de problèmes en premier lieu.

Si ce -t cause des problèmes, il est assez facile de défaire, juste cd ~/miniconda/bin/; ln -s python3 python (ou ce que la version de Python que vous utilisez dans votre Conda env racine). Vous devrez peut-être activer/désactiver un env pour récupérer cette version de python sur votre PATH.