2016-05-03 14 views
7

Wiem, jak instalować pakiety w Anacondzie, używając conda install, a także jak budować pakiety, które są na PyPi, co jest opisane w manual.Anaconda: Na stałe dołączaj pakiety zewnętrzne (jak w PYTHONPATH)

Ale jak mogę trwale dołączyć paczki/foldery do Anacondy? z kodem, nad którym obecnie pracuję?

Moje obecne podejście jest użycie sys:

import sys 
sys.path.append(r'/path/to/my/package') 

co nie jest naprawdę wygodne.

Jakieś wskazówki?

Z góry dziękuję!

Odpowiedz

10

znalazłem dwie odpowiedzi na moje pytanie w Anaconda forum:

1.) Umieścić moduły na miejscu do opakowań, tj katalogu $HOME/path/to/anaconda/lib/pythonX.X/site-packages która jest zawsze na sys.path. Powinno to również działać, tworząc dowiązanie symboliczne.

2.) Dodaj plik .pth do katalogu $HOME/path/to/anaconda/lib/pythonX.X/site-packages. To może być nazwane cokolwiek (po prostu musi się kończyć .pth). Plik .pth to po prostu nowa lista nazw ścieżek katalogów, które zostaną dodane do ścieżki w Pythonie.

Obie prace są proste i wybrałem drugą opcję, ponieważ jest bardziej elastyczna.

Dzięki!

2

Preferowanym rozwiązaniem byłoby zbudowanie własnego pakietu conda (informacje here).

Innym rozwiązaniem byłoby utworzenie łącza między twoim katalogiem pakietów a dowolnym katalogiem w sys.path. W ten sposób, gdy pytasz Pythona o zaimportowanie twojego pakietu, anaconda przeszuka jego różne katalogi sys.path i odczyta link do twojego pakietu tak, jakby ten pakiet był w jednym z katalogów sys.path.

Łączenie katalogu można wykonać z łatwością za pomocą polecenia ln (nazwa_połączenia). Na przykład:

ln -s /path/to/my/package /path/to/anaconda/lib/python2.7/site-packages/ 

Powyższy link pozwoli Ci zaimportować pakiet w domyślnym środowisku anakonda z dowolnego katalogu. Nie wpłynie to na żadne inne środowisko.

Jeśli chcesz dodać pakiet do konkretnego środowiska (np - „myenv”) w Anaconda, można połączyć pakiet na jeden z torów sys że szczególną Środowiska:

ln -s /path/to/my/package /path/to/anaconda/env/myenv/lib/python2.7/site-packges/ 

zwrócić uwagę na następujące:

  • Łączenie katalogu pakietów do ścieżki sys, zamiast faktycznie przesuwając katalogu pakietów do ścieżki sys, pozwala zachować swój pakiet w katalogu wyboru.
  • Flaga -s generuje miękkie łącze (podobnie jak skrót).Jeśli przeniesiesz katalog pakietów, link nie zadziała. Uruchamianie ln bez flagi -s generuje twarde łącze (podobnie jak kopię lustrzaną), na które nie ma wpływu przenoszenie (lub nawet usuwanie ..) katalogu pakietów. Zalety i wady miękkich linków i twardych linków są dyskutowane here

  • Użytkownicy systemu Windows powinni używać mklink. Aby uzyskać więcej informacji, patrz: here.