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

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

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

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



답변

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


답변

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.


답변

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

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


답변

나는 @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 패키징에 들어가는 모든 것을 좋아하지는 않지만 물건이 “작동하는”경우에는 분명히 감사하는 나와 같은 사람들에게 도움이 될 것이라고 생각합니다 . 콘다는 앞으로 좋은 길처럼 보입니다 …


답변

이것이 내가 Picky를 쓴 이유입니다. http://picky.readthedocs.io/

virtualenvs 및 conda envs에서 pip 또는 conda로 설치된 패키지를 추적하는 python 패키지입니다.


답변

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

>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 환경에서 사용할 수 있습니다.


답변

conda env export환경의 모든 conda 및 pip 패키지를 나열합니다. conda-envconda 루트에 설치해야합니다 (conda install -c conda conda-env )에 .

environment.yml현재 환경을 설명 하는 파일 을 작성하려면 다음을 수행하십시오.

conda env export > environment.yml

참고 문헌 :