Zaczynam pracować z pakietem Anaconda z Continuum.io, aby wykonać pracę scipy. Byłem w stanie uruchomić anacondę, ale nie mogę stwierdzić, czy anaconda tworzy nową zmienną środowiskową PYTHONPATH dla każdego nowego środowiska, które tworzy, czy też opiera się na wspólnym systemie PYTHONPATH? Nie mogłem znaleźć żadnych informacji na ten temat w dokumentacji. Ponadto, kiedy zrobiłem printenv, nie widziałem zmiennej PYTHONPATH w nowo stworzonym środowisku - chociaż znalazłem kilka nowych zmiennych środowiskowych anakond. Najlepsze, co mogę znaleźć, to to, że anaconda dodała kilka katalogów anakonda i nowy katalog środowiskowy do nagłówka zmiennej PATH - ale to niekoniecznie izoluje nowy pakiet ze środowiska systemowego, ale jest blisko. Czy ktoś zna odpowiedź na to pytanie lub znalazł sposób, aby poradzić sobie z tym problemem.Czy anaconda tworzy osobną zmienną PYTHONPATH dla każdego nowego środowiska?
Odpowiedz
Nie, jedyną rzeczą wymagającą modyfikacji w środowisku Anaconda jest PATH (tak, że pobiera właściwy Python z katalogu bin/
środowiska lub Scripts\
w systemie Windows).
Sposób działania środowisk Anaconda polega na tym, że trudno jest połączyć wszystko, co jest zainstalowane w środowisku. Dla wszystkich celów i celów oznacza to, że każde środowisko jest całkowicie oddzielną instalacją Pythona i wszystkich pakietów. Używając twardych łączy, robi się to wydajnie. W związku z tym nie ma potrzeby zadzierania z PYTHONPATH, ponieważ plik binarny Python w środowisku przeszukuje już pakiety serwisu w środowisku i biblioteki środowiska, i tak dalej.
Ah excellent. To wspaniale. Dokładnie to, co chciałem wiedzieć. Dzięki jeszcze raz. – krishnab
Korzystanie z niego na komputerze z systemem Windows i PYTHONPATH z dwóch zestawów zdecydowanie się różnią. Anakonda nie zawiera w sobie mojego katalogu modułów. Dla porównania dodałem go z Advanced system Settings w Windows 7. Wygląda dobrze z Pythona, że w notesie ipython jest zepsuty – Joop
Anaconda nie używa PYTHONPATH
. Należy jednak pamiętać, że jeśli ustawiona jest opcja PYTHONPATH
, może zostać wykorzystana do załadowania biblioteki, która nie znajduje się w środowisku anakondy. Dlatego też przed aktywowaniem środowisko to może być dobry, aby zrobić
unset PYTHONPATH
na przykład to punkty PYTHONPATH do nieprawidłowego pandy 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
wyłączające PYTHONPATH
uniemożliwia złego pandy lib z załadunkiem :
Czy można bezpiecznie używać PYTHONPATH do wskazywania na lokalne pliki i moduły? Czy istnieje lepszy sposób niż użycie PYTHONPATH? – garyp
Domyślam się, że dev działa dobrze. Mam tendencję do uruchamiania Pythona z katalogu, który ma moduł, nad którym pracuję, co jest w zasadzie to samo. Możesz również użyć 'pip install -e python_module_dir' z załadowanym anaconda env, więc nie masz aktualizacji' PYTHONPATH'. – inodb
Ale nie każdy pakiet Pythona jest dostępny w Anacondzie, więc co z tym, kiedy używasz PIP do instalowania pakietów, jak to często bywa? Następnie potrzebujesz PYTHONPATH (specyficznej dla wersji Pythona), więc musisz się martwić o zmianę/ustawienie jej w każdej powłoce/za każdym razem, gdy pobierasz skrypt "activate", aby zmienić wersję Pythona. Dobrze? – smci