Anaconda (Conda) 환경에서 pip-installed 패키지를 어떻게 추적합니까?


141

Anaconda Python 배포판을 설치하고 사용하고 있으며 Anaconda (Conda) 환경을 사용하기 시작했습니다. 표준 conda install...명령을 사용하여 패키지를 배포 환경에 넣을 수 있지만 외부 환경 (예 : Flask-WTF, flask-sqlalchemy 및 alembic)을 사용 pip install하여 활성 환경에서 사용해야 합니다. 그러나 환경의 내용을 볼 때 디렉토리 또는 conda listpip installed 패키지를 사용 하면 표시되지 않습니다.

내가 설치 한 모든 패키지를 사용 pip freeze하고 pip list나열합니다.

내 Anaconda env의 각 항목 ( pipconda설치)을 추적 할 수있는 방법이 있습니까?


7
예를 pip들어와 함께 설치하여 사용하십시오 . 이 패키지를 사용하여 환경에 패키지를 설치하고 이것 과 함께 설치된 패키지의 조합을 확인하십시오 . conda~/anaconda/bin/pipcondapipconda install
osa

7
conda list한동안 다른 수단 (예 : pip, easy-install, 직접 연결 python setup.py install등) 으로 설치 한 python 패키지가 포함되었습니다
kalefranz

1
핍을 업그레이드하지 마십시오. 그렇지 않으면이 수출이 중단 될 것입니다
Andrew Cassidy

답변:


120

conda-env는 이제 이것을 자동으로 수행합니다 (pip가 conda와 함께 설치된 경우).

환경 마이그레이션에 사용되는 내보내기 도구를 사용하여이 작동 방식을 확인할 수 있습니다.

conda env export -n <env-name> > environment.yml

이 파일에는 conda 패키지와 pip 패키지가 모두 나열됩니다.

name: stats
channels:
  - javascript
dependencies:
  - python=3.4
  - bokeh=0.9.2
  - numpy=1.9.*
  - nodejs=0.10.*
  - flask
  - pip:
    - Flask-Testing

환경 내보내기를 수행하려면 environment.yml새 호스트 시스템으로 이동 하여 다음을 실행하십시오.

conda env create -f path/to/environment.yml

64

conda설치된 패키지 만 추적합니다. 그리고 설치 프로그램 자체를 pip사용하여 pip설치했거나 계란 정보를 생성 한 conda 빌드에 사용 setuptools된 패키지를 제공합니다 setup.py. 기본적으로 세 가지 옵션이 있습니다.

  1. 패키지 관리자와 함께 ( 로 표시된 ) 패키지를 사용하여 설치된 패키지 conda listpip freeze와 패키지로 함께 설치된 conda( 및 표시 되지 않은 ) 패키지를 통합 할 수 있습니다 .conda listcondapippip freezeconda listpip

  2. 환경 단지를 설치하십시오 python, pip그리고 distribute패키지에 모든 것을 관리 pip. (당신이 Windows에 있다면 이것은 사소한 것이 아닙니다 ...)

  3. 자신 만의 conda패키지를 만들고으로 모든 것을 관리하십시오 conda.

conda패키지 를 만드는 것이 매우 쉽기 때문에 개인적으로 세 번째 옵션을 추천 합니다. 연속체의 github 계정에는 예제 레시피의 git 저장소가 있습니다. 그러나 일반적으로 다음과 같이 요약됩니다.

 conda skeleton pypi PACKAGE
 conda build PACKAGE

또는 그냥 :

conda pipbuild PACKAGE

또한 한 번 빌드하면 https://binstar.org/에 업로드 할 수 있습니다. 거기에서 설치하면됩니다.

그러면 모든 것을 사용하여 관리하게됩니다 conda.


3
난 단지에 노력 ~/anaconda/bin/pip install memory-profiler하고 conda install numba, 그들이 모두에 표시됩니다 ~/anaconda/bin/pip freeze.
osa

2
"연속체의 github 계정에 예제 레시피의 git 저장소" github.com/ContinuumIO/anaconda-recipes ? 가능한 경우 링크하십시오
endolith

그러나 실제로 패키지를 가져 와서 가져올 수는 없습니다. stackoverflow.com/a/20750388/125507conda install C:\...PACKAGE-0.0.0-py27_0.tar.bz2
endolith

나는 항상 conda install python=3.x.y후속 pip 설치가 conda installed pip를 통과하도록 항상 conda 환경에 있다고 말하고 싶습니다 .
Ustaman Sangat

24

pip 및 PyPI와의 통합을 향상시키는 conda 분기 (new-pypi-install)가 있습니다. 특히 conda 목록에는 pip installed 패키지가 표시되고 conda 설치는 먼저 conda 패키지를 찾고 pip를 사용하여 패키지를 설치하지 못합니다.

이 지점은 이번 주 후반에 통합되어 conda 2.1 버전이 conda와 pip 통합을 개선 할 것입니다.


2
나는 이것이 이미 conda 2.2.3 (그리고 아마도 그 이전)에서 작동하고 있음을 지적하고 싶습니다. 그것이 작동하는 방법은 시도 conda install package하고 콘다 레시피를 찾을 수 없다면, 그것을 통해 설치하려고 시도 pip하고 추적합니다. pip환경에없는 경우 설치 하는 것이 도움이 됩니다. 모든 작업에 감사합니다 Travis!
jorgeca

5
이것을 여러 번 잘못 읽었으므로 설명이 명확 해졌습니다. @Travis는 하나가 콘다 내부에서 실행 중이면 pip를 실행하면 먼저 콘다 패키지를 검색한다고 생각합니다. conda 설치는 pypi 패키지를 찾지 않으며 pypi.binstar.org의 항목조차 찾지 않습니다. 이것은 conda 3.5.2부터입니다.
AnneTheAgile

9
이것이 제거 되었습니까? 실행하면 conda install autopep8"No package found"라는 메시지가 표시되며 anaconda.org를 수동으로 검색해야합니다.
endolith

@AnneTheAgile running pip...도 작동하지 않습니다. 콘다 패키지를 전혀 찾지 않습니다.
Wang

16

나는 @Viktor Kerkez의 답변을 따랐으며 혼합 된 성공을 거두었습니다. 때로는이 요리법이

콘다 스켈레톤 파이피 패키지

콘다 빌드 패키지

모든 것이 작동하는 것처럼 보이지만 패키지를 성공적으로 가져올 수 없습니다. 최근 나는 Anaconda 사용자 그룹 에 대해 이것에 대해 물었고 @Travis Oliphant 자신이 conda를 사용하여 Anaconda와 함께 제공되지 않는 패키지를 빌드하고 관리하는 가장 좋은 방법에 대해 들었습니다. 이 스레드를 읽을 수 있습니다 여기에 영업의 질문에 대한 답변이 더 완벽하게, 그러나 나는 희망을 아래의 방법을 설명 할 것이다 ...

예 : 우수한 prettyplotlib 패키지 를 설치하려고 합니다 conda 2.2.5를 사용하여 Windows에 .

1a) conda build --build-recipe prettyplotlib

빌드 메시지는 빌드의 마지막 테스트 섹션까지 잘 보입니다. 이 오류를 보았다

"C : \ Anaconda \ conda-bld \ test-tmp_dir \ run_test.py"파일, 23 행 가져 오기 없음 구문 오류 : 할당 할 수 없습니다. 테스트 실패 : prettyplotlib-0.1.3-py27_0

1b) / conda-recipes / prettyplotlib로 이동하여 meta.yaml 파일을 편집하십시오. 현재 1a 단계와 같이 패키지를 설정하면 test섹션에 오류가있는 yaml 파일이 생성됩니다 . 예를 들어, 다음은 광산을 찾는 방법입니다.prettyplotlib

test:   # Python imports   imports:
    - 
    - prettyplotlib
    - prettyplotlib

이 섹션을 편집하여-앞에있는 빈 줄을 제거하고 중복 prettyplotlib 줄도 제거하십시오. 이 글을 쓰는 시점에서 나는 conda로 설치하는 외부 패키지에 대해 이와 같은 대부분의 meta.yaml 파일을 편집해야한다는 것을 알았습니다. 즉, 주어진 패키지의 중복 가져 오기와 함께 오류를 일으키는 빈 가져 오기 줄이 있음을 의미합니다 .

1c) 1a에서 명령을 다시 실행하십시오. 이번에는 오류없이 완료되어야합니다. 빌드가 끝나면 binstar에 빌드를 업로드할지 묻는 메시지가 표시 됩니다. 아니요를 입력 한 후 다음 메시지를 보았습니다.

이 패키지를 나중에 binstar.org에 업로드하려면 다음을 입력하십시오.

binstar 업로드 C : \ Anaconda \ conda-bld \ win-64 \ prettyplotlib-0.1.3-py27_0.tar.bz2

tar.bz2 파일은 실제로 설치해야하는 빌드입니다.

2) conda install C:\Anaconda\conda-bld\win-64\prettyplotlib-0.1.3-py27_0.tar.bz2

이 단계에 따라 conda를 사용하여 Anaconda와 함께 제공되지 않는 많은 패키지를 설치했습니다. 이전에는 pip를 사용하여 이들 중 일부를 설치 했으므로pip uninstall PACKAGE 를 설치 했으므로 conda를 사용하여 PACKAGE를 설치하기 전에 수행했습니다. conda를 사용하여 conda, pip, easy_install 및 python setup.py 설치와 함께 설치되는 것보다 단일 접근 방식으로 거의 모든 패키지를 관리 할 수 ​​있습니다.

맥락에서, @Travis Oliphant의 최근 블로그 게시물 은 강력한 Python 패키징에 들어가는 모든 것을 좋아하지는 않지만 물건이 "작동하는"경우에는 분명히 감사하는 나와 같은 사람들에게 도움이 될 것이라고 생각합니다 . 콘다는 앞으로 좋은 길처럼 보입니다 ...


2
conda 버전 3.5.2를 사용하여 $ conda build --build-recipe XXX; '인식 할 수없는 인수 : --build-recipe'와 함께 오류가 발생했습니다. 완전한 응답은; 사용법 : conda-build [-h] [-c] [--binbin-upload 없음] [--output] [-s] [-t] [--no-test] [-V] [-q] RECIPE_PATH [RECIPE_PATH ...] CONDA 빌드 : 오류 : 알 수없는 인수 : --build-레시피
AnneTheAgile


3

여기서 누락 된 것은 당신이 할 때입니다.

>pip install .

setup.py를 사용하여 로컬 패키지를 설치하려면 동일한 버전 의 Python 을 사용하는 모든 conda 환경에 표시되는 패키지를 설치합니다 . 참고 나는 pip의 conda 버전을 사용하고 있습니다!

예를 들어, python2.7을 사용하는 경우 로컬 패키지를 여기에 넣습니다.

/usr/local/anaconda/lib/python2.7/site-packages

그런 다음 나중에 python = 2.7 (= 기본값)로 새 conda env를 만듭니다.

>conda create --name new

>source activate new

그리고 나서 :

(new)>conda list    // empty - conda is not aware of any packages yet

그러나 내가 할 경우 :

(new)>pip list      // the local package installed above is present

따라서이 경우 conda는 pip 패키지에 대해 알지 못하지만 파이썬에서 패키지를 사용할 수 있습니다.

내가 대신 (다시 주사위를 사용하여) 로컬 패키지를 설치하는 경우 그러나, 이후에 내가 만든 (활성화) 한 새로운 CONDA의 ENV를, 지금 CONDA 그것을 본다 :

(new)>conda list   // sees that the package is there and was installed by pip

따라서 conda와 pip 간의 상호 작용에는 몇 가지 문제가 있습니다. 즉, 하나의 conda에서 로컬 패키지를 설치하기 위해 pip를 사용하면 env는 패키지를 콘돔 목록을 통해 볼 수는 없지만 동일한 파이썬 버전의 다른 모든 conda 환경에서 사용할 수 있습니다.



2

나는 일반적으로 'pip'명령 전에 패키지를 설치하려는 특정 환경에 대해 'bin / pip'폴더를 접두어로 사용합니다. 예를 들어, py34 환경에 pymc3을 설치하려면 다음 명령을 사용해야합니다.

~/anaconda/envs/py34/bin/pip install git+https://github.com/pymc-devs/pymc3 

기본적으로 환경 'bin / pip'폴더의 올바른 경로를 찾아서 설치 명령 앞에 두어야합니다.


1

which pip경로는 다음과 같습니다.

$ which pip
/home/kmario23/anaconda3/bin/pip

따라서 내가 사용 pip install <package-name>하는 패키지는 목록을 사용하여 내보낼 때 패키지 목록에 반영되어야합니다.

$ conda list --export > conda_list.txt

그러나 나는 그렇지 않습니다. 대신 다른 여러 사람이 제안한대로 다음 명령을 사용했습니다.

# get environment name by
$ conda-env list

# get list of all installed packages by (conda, pip, etc.,)
$ conda-env export -n <my-environment-name> > all_packages.yml
# if you haven't created any specific env, then just use 'root'

이제 all-packages.yml파일의 모든 패키지를 볼 수 있습니다 .


1

conda 환경에 아래 주어진 명령을 설치하여 시작할 수 있습니다.

conda install pip

환경에 필요한 모든 pip 패키지를 설치합니다.

환경을 내보내기 위해 모든 conda 및 pip 패키지를 설치 한 후 다음을 사용하십시오.

conda env export -n <env-name> > environment.yml

폴더에 필요한 파일이 생성됩니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.