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?
risposta
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.
Ah eccellente. È grandioso. Esattamente quello che volevo sapere. Grazie ancora. – krishnab
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
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
>>>>
È sicuro usare PYTHONPATH per puntare a file e moduli prodotti localmente? C'è un modo migliore di usare PYTHONPATH? – garyp
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
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