2013-06-30 17 views
25

Sto iniziando a lavorare con il pacchetto Anaconda di Continuum.io per fare lavori scipy. Sono stato in grado di avviare anaconda, ma non riesco a capire se anaconda crea una nuova variabile di ambiente PYTHONPATH per ogni nuovo ambiente che crea o se si basa sul sistema comune PYTHONPATH? Non sono riuscito a trovare alcuna informazione su questo nella documentazione. Inoltre, quando ho fatto un printenv, non ho visto una variabile PYTHONPATH nel nuovo ambiente creato - anche se ho trovato alcune nuove variabili d'ambiente create da anaconda. Il meglio che posso trovare è che anaconda ha aggiunto alcune directory anaconda e la nuova directory di ambiente alla variabile PATH, ma questo non isola necessariamente il nuovo pacchetto dall'ambiente di sistema, ma è vicino. Qualcuno conosce la risposta a questa domanda o ha trovato un modo per affrontare questa preoccupazione.Anaconda crea una variabile PYTHONPATH separata per ogni nuovo ambiente?

+0

Ma non tutti i pacchetti Python sono disponibili in Anaconda, quindi che dire di quando si usa pip per installare i pacchetti, come è comune? Quindi hai bisogno di un PYTHONPATH (specifico per la versione Python), quindi devi preoccuparti di cambiarlo/impostarlo in ogni shell/ogni volta che generi lo script 'activate' per cambiare la versione di Python. Destra? – smci

risposta

23

No, l'unica cosa che deve essere modificata per un ambiente Anaconda è il PATH (in modo che ottenga il giusto Python dall'ambiente bin/ directory o Scripts\ su Windows).

Il modo in cui gli ambienti di Anaconda funzionano è che collegano strettamente tutto ciò che viene installato nell'ambiente. A tutti gli effetti, questo significa che ogni ambiente è un'installazione completamente separata di Python e di tutti i pacchetti. Usando i collegamenti fisici, questo viene fatto in modo efficiente. Quindi, non c'è bisogno di pasticciare con PYTHONPATH perché il binario Python nell'ambiente cerca già i pacchetti del sito nell'ambiente, e la lib dell'ambiente, e così via.

+0

Ah eccellente. È grandioso. Esattamente quello che volevo sapere. Grazie ancora. – krishnab

+0

Usandolo su Windows Machine e PYTHONPATH dalle due Installazioni sicuramente differenti. L'anaconda non ha la mia directory di moduli in esso. Per riferimento l'ho aggiunto dalle Impostazioni di sistema avanzate in Windows 7. Sembra da python che sia in ipython che sia rotto – Joop

15

Anaconda non utilizza lo PYTHONPATH. Si noti tuttavia che se è impostato PYTHONPATH, potrebbe essere utilizzato per caricare una libreria che non si trova nell'ambiente anaconda. È per questo che prima di attivare un ambiente che potrebbe essere buono per fare un

unset PYTHONPATH 

Per esempio questi punti PYTHONPATH ad un errato panda lib:

export PYTHONPATH=/home/john/share/usr/anaconda/lib/python 
source activate anaconda-2.7 
python 
>>>> import pandas as pd 
/home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/hashtable.so: undefined symbol: PyUnicodeUCS2_DecodeUTF8 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/__init__.py", line 6, in <module> 
    from . import hashtable, tslib, lib 
ImportError: /home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/hashtable.so: undefined symbol: PyUnicodeUCS2_DecodeUTF8 

disinserimento del PYTHONPATH impedisce il lib panda sbagliato dal carico :

unset PYTHONPATH 
source activate anaconda-2.7 
python 
>>>> import pandas as pd 
>>>> 
+2

È sicuro usare PYTHONPATH per puntare a file e moduli prodotti localmente? C'è un modo migliore di usare PYTHONPATH? – garyp

+0

Immagino che per dev funzioni bene. Tendo ad eseguire python dalla dir che ha il modulo su cui sto lavorando, che è fondamentalmente la stessa cosa. Puoi anche usare 'pip install -e python_module_dir' con l'anaconda env caricato in modo da non aggiornare il' PYTHONPATH'. – inodb

Problemi correlati