python 차이 - Anaconda(Conda)환경에서 pip 설치 패키지를 어떻게 추적합니까?




아나콘다 업그레이드 (9)

pip와 PyPI와의 더 나은 통합을 제공하는 conda (new-pypi-install) 분기가 있습니다. 특히 conda list에는 pip 설치된 패키지가 표시되고 conda install은 먼저 conda 패키지를 찾으려고하고 패키지를 설치하기 위해 pip를 사용합니다.

이 지사는 이번 주말에 병합 될 예정이므로 버전 2.1의 conda가 conda와 더 잘 통합 될 것입니다.

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

pip freezepip list 사용하면 지금까지 설치 한 모든 패키지 pip list 만 표시됩니다.

내 Anaconda env s ( pipconda 모두 설치되어 있음)에있는 것을 추적 할 수있는 방법이 있습니까?


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

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

conda env export > environment.yml

참고 문헌 :


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

나는 여기서 누락 된 것이 당신이 할 때 그것이라고 생각합니다 :

>pip install .

setup.py로 로컬 패키지를 설치하기 위해 같은 버전 의 파이썬을 사용하는 모든 환경에 보이는 패키지를 설치합니다. 참고 핍의 ​​콘도 버전을 사용하고 있습니다!

예를 들어, 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 패키지에 대해 알지 못하지만 패키지는 python에서 사용할 수 있습니다.

그러나 새로운 conda env를 생성 (활성화) 한 로컬 패키지 (다시 pip를 사용)를 설치하면 conda가 다음과 같이 표시합니다.

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

그래서 conda와 pip 사이의 상호 작용에는 몇 가지 이슈가 있다고 생각합니다. 즉, pip를 사용하여 하나의 conda env에서 로컬 패키지를 설치하면 해당 python 버전의 다른 모든 conda 환경에 해당 패키지를 사용할 수 있습니다 (그러나 conda list에서는 볼 수 없습니다).


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

  1. 당신은 conda listpip freezeconda 하여 conda 패키지 매니저와 conda 패키지를 사용하여 conda 패키지를 관리 할 수 ​​있습니다. conda list ).

  2. 자신의 환경에 python 만 설치하고 패키지를 distribute 하고 distribute 하고 모든 것을 pip 관리하십시오. (Windows에서 작업하는 경우 사소한 일이 아닙니다 ...)

  3. 자신의 conda 패키지를 만들고 conda 모든 것을 관리 conda .

나는 conda 패키지를 만드는 conda 매우 쉽기 때문에 개인적으로 세 번째 옵션을 추천 할 것이다. 연속체의 github 계정에 예제 조리법에 대한 git 저장소가 있습니다. 그러나 그것은 일반적으로 아래로 귀결됩니다 :

 conda skeleton pypi PACKAGE
 conda build PACKAGE

또는 단지 :

conda pipbuild PACKAGE

또한 한 번 빌드 한 후에는 https://binstar.org/ 업로드하여 설치하면됩니다.

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


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

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


which pip 은 다음 경로를 보여줍니다 :

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

따라서, pip install <package-name> 을 사용하여 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 파일에있는 all-packages.yml 패키지를 볼 수 있습니다.


필자는 보통 'pip'명령 전에 패키지를 설치하려는 특정 환경의 'bin / pip'폴더에 접두사를 붙입니다. 예를 들어, py34 환경에 pymc3을 설치하려면 다음 명령을 사용해야합니다.

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

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


우분투 사용자

도커 구성에 새 DNS 주소를 추가해야합니다.

sudo nano /lib/systemd/system/docker.service

ExecStar 다음에 DNS를 추가하십시오.

--dns 10.252.252.252 --dns 10.253.253.253

그렇게 보일 것입니다 :

ExecStart=/usr/bin/dockerd -H fd:// --dns 10.252.252.252 --dns 10.253.253.253

그럼 :

systemctl daemon-reload
sudo service docker restart

일해야한다.





python pip anaconda env conda