IT story

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

hot-time 2020. 7. 9. 07:57
반응형

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와 함께 제공되지 않는 패키지를 빌드하고 관리하는 가장 좋은 방법에 대해 들었습니다. 이 스레드를 읽을 수 있습니다 여기 영업의 질문에 대한 답변이 더 완벽하게, 그러나 나는 희망을 아래의 방법을 설명 할 것이다 ...

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

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) Rerun the command from 1a, which should complete with out error this time. At the end of the build you'll be asked if you want to upload the build to binstar. I entered No and then saw this message:

If you want to upload this package to binstar.org later, type:

$ binstar upload C:\Anaconda\conda-bld\win-64\prettyplotlib-0.1.3-py27_0.tar.bz2

That tar.bz2 file is the build that you now need to actually install.

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

Following these steps I have successfully used conda to install a number of packages that do not come with Anaconda. Previously, I had installed some of these using pip, so I did pip uninstall PACKAGE prior to installing PACKAGE with conda. Using conda, I can now manage (almost) all of my packages with a single approach rather than having a mix of stuff installed with conda, pip, easy_install, and python setup.py install.

For context, I think this recent blog post by @Travis Oliphant will be helpful for people like me who do not appreciate everything that goes into robust Python packaging but certainly appreciate when stuff "just works". conda seems like a great way forward...


This is why I wrote Picky: http://picky.readthedocs.io/

It's a python package that tracks packages installed with either pip or conda in either virtualenvs and conda envs.


I think what's missing here is that when you do:

>pip install .

to install a local package with a setup.py, it installs a package that is visible to all the conda envs that use the same version of python. Note I am using the conda version of pip!

e.g., if I'm using python2.7 it puts the local package here:

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

If I then later create a new conda env with python=2.7 (= the default):

>conda create --name new

>source activate new

And then do:

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

However, if I do:

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

So in this case, conda does not know about the pip package, but the package is available to python.

However, If I instead install the local package (again using pip) after I've created (and activated) the new conda env, now conda sees it:

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

So I think the interaction between conda and pip has some issues - ie, using pip to install a local package from within one conda env makes that package available (but not seen via conda list) to all other conda envs of the same python version.


conda env export lists all conda and pip packages in an environment. conda-env must be installed in the conda root (conda install -c conda conda-env).

To write an environment.yml file describing the current environment:

conda env export > environment.yml

References:


I usually prefix the 'bin/pip' folder for the specific environment you want to install the package before the 'pip' command. For instance, if you would like to install pymc3 in the environment py34, you should use this command:

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

You basically just need to find the right path to your environment 'bin/pip' folder and put it before the install command.


You can start by installing the below given command in the conda environment:

conda install pip

Followed by installing all pip packages you need in the environment.

After installing all the conda and pip packages to export the environment use:

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

This will create the required file in the folder


My which pip shows the following path:

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

So, whatever package I install using pip install <package-name> will have to be reflected in the list of packages when the list is exported using:

$ conda list --export > conda_list.txt

But, I don't. So, instead I used the following command as suggested by several others:

# 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'

Now, I can see all the packages in my all-packages.yml file.

참고URL : https://stackoverflow.com/questions/18640305/how-do-i-keep-track-of-pip-installed-packages-in-an-anaconda-conda-environment

반응형