Podczas instalowania pakietów w Requirements.txt przy użyciu Conda za pomocą następującego polecenia
conda install --yes --file requirements.txt
Jeśli pakiet w pliku Requirements.txt nie jest dostępny, zgłasza błąd „Brak pakietu”, taki jak ten pokazany poniżej:
Korzystanie z witryny Anaconda Cloud api https://api.anaconda.org
Pobieranie metadanych pakietu: ....
Błąd: w bieżących kanałach linux-64 nie znaleziono pakietów: nimfa == 1.2.3
Możesz wyszukać ten pakiet na anaconda.org za pomocą
anaconda search -t conda nimfa ==1.2.3
Czy zamiast zgłaszać błąd, można zmienić to zachowanie, tak aby instalowało wszystkie dostępne pakiety w pliku Requirements.txt i wyświetlało ostrzeżenie dla tych, które nie są dostępne?
Chciałbym to, ponieważ pakiet nimfa, o którym mówi błąd, jest niedostępny, można zainstalować pip. Więc jeśli mogę zmienić zachowanie, conda install --yes --file requirements.txt
aby po prostu wyrzucić ostrzeżenie o niedostępnych pakietach, mogę wykonać polecenie za pomocą polecenia pip install -r requirments.txt
w .travis.yml, więc TravisCI spróbuje zainstalować go z dowolnego miejsca, w którym jest dostępny.
pip install
używać pakietów, które nie są dostępneconda install
?FOR /F "delims=~" %f in (requirements.txt) DO conda install --yes "%f" || pip install "%f"
działa bardzo dobrze. Dzięki!while read req; do if [[ $req != "#"* ]]; then conda install --yes $requirement || pip install $requirement; fi; done < requirements.txt
Możesz to zrobić, jak wspomniano w tym
Eksportuj do pliku .yml
Powielać:
źródło
Dla tych, którzy szukają, użyłem tego jako rozwiązania @TillHoffmann dla muszli rybnej:
$ while read requirement; conda install --yes $requirement; end < requirements.txt
I
$ while read requirement; conda install --yes $requirement;or pip install $requirement; end < requirements.txt
źródło
Odpowiedź Pbms to właściwy sposób na zrobienie tego, zakładając, że masz istniejące środowisko do skopiowania. Conda jest w pełni zdolna do instalowania zarówno pakietów Conda, jak i pakietów pip, jak wymieniono w
environment.yml
. Chciałem bardziej szczegółowo udokumentować cały proces. Zauważ, że używam środowisk opartych na folderach, dlatego dodałem--prefix [path to environment folder]
do większości poleceń.Załóżmy, że zainstalowałeś środowisko dla istniejącego projektu w folderze o nazwie
env
w bieżącym folderze, na przykład:Wygenerowałbyś
environment.yml
dla środowiska tego projektu w następujący sposób:Utworzyłbyś nowe środowisko w innym folderze, kopiując
environment.yml
do niego, a następnie uruchamiając to stamtąd:Otrzymasz już istniejące środowisko do dopasowania
environment.yml
, ponownie kopiującenvironment.yml
tam, a następnie uruchamiając to stamtąd:Gdy dane środowisko jest aktywne, należy zweryfikować stan jego pakietów w następujący sposób:
conda list
To jest skrócona wersja tego, co może wydrukować to polecenie (zwróć uwagę, że pakiety pip są oznaczone
pypi
):# Name Version Build Channel pip 19.2.2 py37_0 python 3.7.4 h5263a28_0 numpy 1.16.4 py37h19fb1c0_0 pandas 0.25.1 py37ha925a31_0 pyodbc 4.0.27 py37ha925a31_0 ibm-db 3.0.1 pypi_0 pypi ibm-db-sa 0.3.5 pypi_0 pypi
Wreszcie, jest to skrócona wersja tego, co
environment.yml
może wyglądać (zwróć uwagę, że pakiety pip są wymienione w swojej własnej kategorii):dependencies: - pip=19.2.2=py37_0 - python=3.7.4=h5263a28_0 - numpy=1.16.4=py37h19fb1c0_0 - pandas=0.25.1=py37ha925a31_0 - pyodbc=4.0.27=py37ha925a31_0 - pip: - ibm-db==3.0.1 - ibm-db-sa==0.3.5
Pamiętaj, że używanie Conda i pip razem może powodować zgagę, ponieważ mogą one nieświadomie zniszczyć wzajemne zależności. Powinieneś najpierw zainstalować wszystkie swoje pakiety Conda, a potem wszystkie pakiety pip, zamiast przełączać się między nimi. Jeśli twoje środowisko się zepsuje, oficjalnym zaleceniem jest jego usunięcie i ponowne utworzenie (z
environment.yml
pliku). Więcej informacji można znaleźć w tym przewodniku:https://www.anaconda.com/using-pip-in-a-conda-environment/
źródło