2015-04-26 7 views
11

Gibt es eine Möglichkeit, Conda zu zwingen, die Systemversion von Python (zusammen mit allen Systembibliotheken) in einer bestimmten Umgebung zu verwenden?Erlaube Verwendung von System Python in Conda env?

Ich habe conda standardmäßig in meiner Shell aktiviert, was ein bisschen nervig werden kann, denn wenn ich versuche, eine System Python App auszuführen, bekommt es eine andere Version von Python zu erwarten (Python ist immer noch standardmäßig 2,7) auf * buntu), und oft wird nicht laufen. Ich möchte die Wurzel env von Conda nur eine Umleitung auf die System-Python-Installation sein.

+0

Könnten Sie ein Beispiel App/Erfahrung geben, habe ich das nicht gesehen. –

+0

@AndyHayden: Ich benutze Python 3.4 in meinem Conda-Root-Env, und so grundsätzlich jedes Ubuntu-Paket, das '! #/Bin/env Python' am Anfang des Hauptskript wird fehlschlagen, wenn von der Befehlszeile ausgeführt (weil es erwartet Python 2, was immer noch der Standard ist). Meine '.profile' und' .zshrc' haben beide die Zeilen '# hinzugefügt von Miniconda3 3.9.1 Installer; export PATH = "/ home/naught101/miniconda3/bin: $ PATH" 'in ihnen, so dass conda standardmäßig in allen Shells aktiviert ist. – naught101

+0

Denkst du das ist ein Fehler in diesen Anwendungen? Welche Anwendungen? Können Sie diese Anwendung mit Conda (anstatt apt-get) installieren? –

Antwort

1

Sie müssen alle Benutzer-Shell-Befehle wie Ihre .bashrc-Datei bearbeiten, um das bin-Verzeichnis von anaconda dem Pfad export PATH=~/anaconda/bin:$PATH voranzuzählen, während Sie in Ihren Stammbefehlen export PATH=$PATH:~/anaconda/bin anhängen. In beiden Fällen haben Sie Zugriff auf den Befehl conda. Sie können prüfen, welcher Python ausgeführt wird, indem Sie $env python --version eingeben. Sie können auch überprüfen, welche anderen Versionen verfügbar wären und in welcher Reihenfolge (wenn die andere entfernt wird), indem Sie $type -a python verwenden. Natürlich stellen Sie sicher, dass Ihre ausführbaren Python-Dateien #!/usr/bin/env python haben und nicht irgendeine andere direkte Route zu einer ausführbaren Python-Datei. Für weitere Informationen Google BASH Shell Abfragen wie http://www.cyberciti.biz/tips/an-example-how-shell-understand-which-program-to-run-part-ii.html.

+0

@ naught101, ich glaube, was oben erklärt wurde, würde funktionieren: wenn Sie die run-Befehle bearbeiten, die unter dem Benutzer root ausgeführt werden, so dass der exportierte PFAD 'export PATH =" $ PATH:/home/naught101/miniconda3/bin " '(sie würden unter root und user 'home' über' $ cd ~ 'liegen), jede Datei/script/etc, die unter root ausgeführt wird, sucht das Standard-Python vor Ihrer conda-Version wie erklärt und Sie sollten die Verwendung bestätigen können die oben genannten Methoden. – 5upa

+1

Ja, es macht das System Python Standard, wenn eine Shell startet, was gut ist, aber wenn Sie 'Quelle aktivieren blah' und dann' source deaktivieren', dann wird der Conda-Stamm env python wieder der Standard, bis Sie die Shell neu starten . – naught101

+1

@ naught101 können Sie dies versuchen: 'export PATH = $ (cond ..deaktivieren) ' – phil

0

Einfach den python Symlink von ~/miniconda3/bin/ entfernen, scheint die Aufgabe zu erledigen.

$ 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 

Bis jetzt scheint dies mir keine Probleme verursacht zu haben. Unglücklicherweise funktioniert das selbe nicht für ~/miniconda/bin/python3, weil conda es benötigt, wenn es auf andere envs umschaltet, die dieselbe Python-Version verwenden. Das hat jedoch an erster Stelle nicht so viele Probleme verursacht.

Wenn dies tut Probleme verursachen, ist es einfach genug, um rückgängig zu machen, nur cd ~/miniconda/bin/; ln -s python3 python (oder was auch immer Version von Python Sie in Ihrer Conda Wurzel env verwenden). Möglicherweise müssen Sie ein env aktivieren/deaktivieren, um diese Version von Python wieder in Ihren PATH zu bekommen.

Verwandte Themen