Zainstalowałem i korzystam z dystrybucji Anaconda Python i zacząłem używać środowiska Anaconda (Conda). Mogę użyć standardowego conda install...
polecenia, aby umieścić pakiety z dystrybucji w moich środowiskach, ale aby użyć czegokolwiek na zewnątrz (np. Flask-WTF, flask-sqlalchemy i alembic), czego potrzebuję pip install
w aktywnym środowisku. Jednak kiedy patrzę na zawartość środowiska, czy to w katalogu, czy używając conda list
tych pip install
pakietów ed, nie pojawiają się.
Używając pip freeze
i pip list
po prostu wyświetla listę wszystkich pakietów, które kiedykolwiek zainstalowałem.
Czy istnieje sposób, aby śledzić, co jest w każdej z moich Anacondy env
(zarówno pip
i conda
zainstalowanych)?
pip
zainstalowanego zconda
np~/anaconda/bin/pip
. Użyj go, aby zainstalować pakiety wconda
środowisku, a także zobaczyć sumę pakietów zainstalowanych z tympip
i zconda install
.conda list
od jakiegoś czasu zawiera pakiety Pythona, które zostały zainstalowane w inny sposób (np. pip, easy-install, bezpośrednio zpython setup.py install
, itp.)Odpowiedzi:
conda-env robi to teraz automatycznie (jeśli pip został zainstalowany z conda).
Możesz zobaczyć, jak to działa, używając narzędzia eksportu używanego do migracji środowiska:
Plik będzie zawierał zarówno pakiety conda, jak i pakiety pip:
Jeśli chcesz kontynuować eksportowanie środowiska, przejdź
environment.yml
na nowy komputer główny i uruchom:źródło
conda
będzie śledzić tylko pakiety, które zainstalował. Ipip
poda pakiety, które zostały zainstalowane przy użyciu samegopip
instalatora lub użyłysetuptools
w swojejsetup.py
kompilacji so conda, która wygenerowała informacje o jajku. Masz więc zasadniczo trzy opcje.Można wziąć Związku
conda list
ipip freeze
i zarządzania pakietami, które zostały zainstalowane przy użyciuconda
(które pojawiają się wconda list
) zconda
menedżera pakietów i te, które są instalowane zpip
(w tym serialupip freeze
, ale nie wconda list
) zpip
.Zainstalować tylko w swoim środowisku
python
,pip
orazdistribute
pakiety i zarządzać wszystkim zpip
. (Nie jest to takie trywialne, jeśli używasz systemu Windows ...)Twórz własne
conda
pakiety i zarządzaj wszystkim za pomocąconda
.Osobiście poleciłbym trzecią opcję, ponieważ budowanie
conda
pakietów jest bardzo łatwe . Na koncie github kontinuum znajduje się repozytorium git z przykładowymi przepisami. Ale zwykle sprowadza się to do:Lub tylko:
Również po ich utworzeniu możesz przesłać je na https://binstar.org/ i po prostu zainstalować stamtąd.
Wtedy będziesz mieć wszystko zarządzane za pomocą
conda
.źródło
~/anaconda/bin/pip install memory-profiler
iconda install numba
, i oba są pokazane w~/anaconda/bin/pip freeze
.conda install C:\...PACKAGE-0.0.0-py27_0.tar.bz2
zgodnie z opisem na stackoverflow.com/a/20750388/125507conda install python=3.x.y
w swoim środowisku Conda tak, aby kolejne instalacje pip przechodziły przez pip zainstalowany przez Conda.Istnieje gałąź conda (new-pypi-install), która zapewnia lepszą integrację z pip i PyPI. W szczególności lista conda pokaże również pakiety zainstalowane przez pip, a instalacja conda najpierw spróbuje znaleźć pakiet conda i zakończy się niepowodzeniem, co spowoduje, że zainstaluje pakiet za pomocą pip.
Ta gałąź ma zostać scalona jeszcze w tym tygodniu, aby wersja 2.1 Conda miała lepszą integrację pip z Conda.
źródło
conda install package
i nie możesz znaleźć przepisu na condę, spróbuje go zainstalować przezpip
(a następnie śledzi). Pomocnie sugeruje nawet instalację,pip
jeśli nie jest w twoim środowisku. Dzięki Travisowi za całą twoją pracę!conda install autopep8
że otrzymam komunikat „Nie znaleziono pakietu” i powinienem ręcznie przeszukać anaconda.org.running pip...
również nie działa, w ogóle nie będzie szukał pakietu conda.Podążyłem za odpowiedzią @Viktor Kerkez i odniosłem mieszany sukces. Okazało się, że czasami ten przepis
wyglądałoby na to, że wszystko działało, ale nie mogę pomyślnie zaimportować PAKIETU. Niedawno zapytałem o to w grupie użytkowników Anaconda i usłyszałem od samego @Travisa Oliphanta o najlepszym sposobie używania conda do budowania i zarządzania pakietami, które nie są dostarczane z Anacondą. Możesz przeczytać ten wątek tutaj , ale opiszę poniżej podejście, aby, miejmy nadzieję, uzupełnić odpowiedzi na pytanie OP ...
Przykład: mam zamiar zainstalować doskonały pakiet prettyplotlib w systemie Windows przy użyciu conda 2.2.5.
1a)
conda build --build-recipe prettyplotlib
Zobaczysz, że wszystkie komunikaty kompilacji wyglądają dobrze do ostatniej sekcji TEST kompilacji. Widziałem ten błąd
1b) Wejdź do / conda-recipes / prettyplotlib i edytuj plik meta.yaml. Obecnie konfigurowanie pakietów jak w kroku 1a powoduje, że pliki yaml mają błąd w
test
sekcji. Na przykład, oto jak wyglądał mójprettyplotlib
Edytuj tę sekcję, aby usunąć pusty wiersz poprzedzony znakiem -, a także usuń nadmiarową linię prettyplotlib. W czasie pisania tego tekstu stwierdziłem, że muszę edytować większość plików meta.yaml takich jak ten dla zewnętrznych pakietów, które instaluję z conda, co oznacza, że istnieje pusta linia importu powodująca błąd wraz z redundantnym importem danego pakietu .
1c) Ponownie uruchom polecenie z 1a, które tym razem powinno zakończyć się bez błędu. Pod koniec kompilacji zostaniesz zapytany, czy chcesz przesłać kompilację do binstar . Wpisałem Nie, a następnie zobaczyłem ten komunikat:
Ten plik tar.bz2 jest kompilacją, którą musisz teraz faktycznie zainstalować.
2)
conda install C:\Anaconda\conda-bld\win-64\prettyplotlib-0.1.3-py27_0.tar.bz2
Wykonując te kroki, pomyślnie użyłem conda do zainstalowania wielu pakietów, które nie są dostarczane z Anacondą. Wcześniej niektóre z nich instalowałem za pomocą pip, więc zrobiłem to
pip uninstall PACKAGE
przed zainstalowaniem PAKIETU z conda. Korzystając z conda, mogę teraz zarządzać (prawie) wszystkimi moimi pakietami za pomocą jednego podejścia, zamiast instalować mieszankę rzeczy z instalacją conda, pip, easy_install i python setup.py install.Jeśli chodzi o kontekst, myślę, że ten ostatni post na blogu autorstwa @Travis Oliphant będzie pomocny dla ludzi takich jak ja, którzy nie doceniają wszystkiego, co zawiera solidne opakowanie Pythona, ale z pewnością doceniają, kiedy coś „po prostu działa”. Conda wydaje się świetną drogą do przodu ...
źródło
Dlatego napisałem Picky: http://picky.readthedocs.io/
Jest to pakiet Pythona, który śledzi pakiety zainstalowane za pomocą pip lub conda w virtualenvs i conda envs.
źródło
Myślę, że brakuje tutaj tego, kiedy:
aby zainstalować pakiet lokalny z setup.py, instaluje pakiet, który jest widoczny dla wszystkich środowisk conda, które używają tej samej wersji Pythona. Uwaga Używam pip w wersji conda!
np. jeśli używam python2.7, umieszczam pakiet lokalny tutaj:
/usr/local/anaconda/lib/python2.7/site-packages
Jeśli później utworzę nowe środowisko conda z python = 2.7 (= wartość domyślna):
A następnie wykonaj:
Jeśli jednak:
W tym przypadku conda nie wie o pakiecie pip, ale pakiet jest dostępny dla Pythona.
Jeśli jednak zamiast tego zainstaluję pakiet lokalny (ponownie za pomocą pip) po utworzeniu (i aktywowaniu) nowego conda env, teraz conda to widzi:
Myślę więc, że interakcja między conda i pip ma pewne problemy - tj. Użycie pip do zainstalowania lokalnego pakietu z jednego conda env sprawia, że ten pakiet jest dostępny (ale nie widziany przez listę conda) dla wszystkich innych conda env w tej samej wersji Pythona.
źródło
conda env export
wyświetla listę wszystkich pakietów conda i pip w środowisku.conda-env
musi być zainstalowany w katalogu głównym Conda (conda install -c conda conda-env
).Aby napisać
environment.yml
plik opisujący aktualne środowisko:Bibliografia:
źródło
Zwykle poprzedzam folder „bin / pip” dla określonego środowiska, w którym chcesz zainstalować pakiet, przed poleceniem „pip”. Na przykład, jeśli chcesz zainstalować pymc3 w środowisku py34, powinieneś użyć tego polecenia:
Po prostu musisz znaleźć właściwą ścieżkę do folderu „bin / pip” swojego środowiska i umieścić ją przed poleceniem instalacji.
źródło
Mój
which pip
pokazuje następującą ścieżkę:Tak więc każdy pakiet, z którego korzystam,
pip install <package-name>
będzie musiał zostać odzwierciedlony na liście pakietów, gdy lista jest eksportowana przy użyciu:Ale ja nie. Zamiast tego użyłem następującego polecenia, zgodnie z sugestiami kilku innych:
Teraz widzę wszystkie pakiety w moim
all-packages.yml
pliku.źródło
Możesz zacząć od zainstalowania poniższego polecenia w środowisku Conda:
conda install pip
Następnie należy zainstalować wszystkie potrzebne pakiety pip w środowisku.
Po zainstalowaniu wszystkich pakietów Conda i PIP w celu wyeksportowania środowiska użyj:
conda env export -n <env-name> > environment.yml
Spowoduje to utworzenie wymaganego pliku w folderze
źródło