Program Tip

오류없이 "conda install --yes --file requirements.txt"를 사용하여 사용 가능한 패키지 만 설치

programtip 2020. 11. 20. 09:26
반응형

오류없이 "conda install --yes --file requirements.txt"를 사용하여 사용 가능한 패키지 만 설치


다음 명령을 통해 Conda를 사용하여 requirements.txt에 패키지를 설치하는 동안

conda install --yes --file requirements.txt

requirements.txt의 패키지를 사용할 수없는 경우 아래와 같은 "패키지 없음 오류"가 발생합니다.

Anaconda Cloud API 사이트 https://api.anaconda.org 사용

패키지 메타 데이터를 가져 오는 중 : ....

오류 : 현재 linux-64 채널에서 다음과 일치하는 패키지를 찾을 수 없음 : nimfa == 1.2.3

anaconda.org에서이 패키지를 검색 할 수 있습니다.

anaconda search -t conda nimfa ==1.2.3

오류를 발생시키는 대신 requirements.txt에 사용 가능한 모든 패키지를 설치하고 사용할 수없는 패키지에 대해 경고를 표시하도록이 동작을 변경할 수 있습니까?

오류가 표시되는 패키지 nimfa를 사용할 수 없으므로 pip를 설치할 수 있기 때문에 이것을 좋아합니다. 따라서 conda install --yes --file requirements.txt사용할 수없는 패키지에 대한 경고 만 표시하도록 의 동작을 변경할 수 있다면 pip install -r requirments.txt.travis.yml 의 명령 으로 후속 조치를 취할 수 있으므로 TravisCI가 사용 가능한 어느 위치에서나 설치를 시도합니다.


나는 파일의 줄을 반복하는 것으로 끝났습니다.

$ while read requirement; do conda install --yes $requirement; done < requirements.txt

편집 : conda를 통해 사용할 수없는 경우 pip를 사용하여 패키지를 설치하려면 다음을 수행하십시오.

$ while read requirement; do conda install --yes $requirement || pip install $requirement; done < requirements.txt

편집 : Windows를 사용하는 경우 (크레딧은 @Clay이동 ) :

$ FOR /F "delims=~" %f in (requirements.txt) DO conda install --yes "%f" || pip install "%f"


에서 언급 한 바와 같이이 작업을 수행 할 수

.yml 파일로 내보내기

conda env export > freeze.yml

재현하려면 :

conda env create -f freeze.yml

찾는 사람들을 위해 생선 껍질에 대한 @TillHoffmann의 솔루션으로 이것을 사용했습니다.

$ while read requirement; conda install --yes $requirement; end < requirements.txt

$ while read requirement; conda install --yes $requirement;or pip install $requirement; end < requirements.txt

여기서 Pbms의 대답은 복사 할 기존 환경이 있다고 가정 할 때 올바른 방법입니다. Conda는에 나열된대로 Conda 패키지와 pip 패키지를 모두 설치할 수 있습니다 environment.yml. 전체 프로세스를 더 자세히 문서화하고 싶었습니다. 폴더 기반 환경을 사용 --prefix [path to environment folder]하고 있으므로 대부분의 명령에 추가 했습니다.

다음 env과 같이 현재 폴더에서 라는 폴더에 기존 프로젝트의 환경을 설치했다고 가정합니다 .

conda create --prefix ./env

다음 environment.yml과 같이 해당 프로젝트의 환경에 대해 생성 합니다.

conda env export --prefix ./env > environment.yml

다른 폴더에 복사 environment.yml한 다음 여기에서 실행 하여 새 환경을 만들 수 있습니다.

conda env create --prefix ./env --file environment.yml

environment.yml다시 한 번 environment.yml거기에 복사 한 다음 거기에서 실행 하면 이미 존재하는 환경이 일치 합니다 .

conda env update --prefix ./env --file environment.yml --prune

문제의 환경이 활성화되면 다음과 같이 패키지 상태를 확인합니다.

conda list

다음은 해당 명령이 인쇄 할 수있는 내용의 요약 된 버전입니다 (pip 패키지는으로 표시됨 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

마지막으로 environment.yml다음과 같은 형태의 요약 버전입니다 (pip 패키지는 자체 카테고리에 나열되어 있음).

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

Be aware that using Conda and pip together can cause some heartburn because they can unknowingly blow away each other's dependencies. You are supposed to install all of your Conda packages first and then all of your pip packages afterward, rather than alternating between the two. If your environment breaks, the official recommendation is to delete and recreate it (from your environment.yml file). For more details, see this guide:

https://www.anaconda.com/using-pip-in-a-conda-environment/

참고URL : https://stackoverflow.com/questions/35802939/install-only-available-packages-using-conda-install-yes-file-requirements-t

반응형