pip 패키지에 대한 종속성 트리를 표시하는 방법이 있습니까?


90

여러 패키지 종속성이있는 프로젝트가 있으며 주요 요구 사항은 requirements.txt. 내가 호출 pip freeze하면 현재 설치된 패키지를 일반 목록으로 인쇄합니다. 나는 또한 다음과 같은 의존 관계를 얻는 것을 선호합니다.

Flask==0.9
    Jinja2==2.7
    Werkzeug==0.8.3

Jinja2==2.7

Werkzeug==0.8.3

Flask-Admin==1.0.6
    Flask==0.9
    Jinja2==2.7
    Werkzeug==0.8.3

목표는 각 특정 패키지의 종속성을 감지하는 것입니다.

Werkzeug==0.8.3
    Flask==0.9
    Flask-Admin==1.0.6

그리고 이것들을 내 현재 requirements.txt. 예를 들어,이 입력의 경우 :

Flask==0.9
Flask-Admin==1.0.6
Werkzeug==0.8.3

나는 얻고 싶다 :

Flask==0.9
    Jinja2==2.7
Flask-Admin==1.0.6
Werkzeug==0.8.3

설치된 pip 패키지의 종속성을 표시하는 방법이 있습니까?


나는 당신이 4 년 전에이 질문을했고 당신이 빨리받은 대답을 부지런히 최선의 대답으로 표시했다는 것을 알고 있습니다. 그렇게 해주셔서 감사합니다. 그러나 1 년 후 Anthon에서받은 답변을 살펴 보겠습니다. pipdeptree는 굉장합니다 !!! 분명히 @naiquevin은 2015 년 4 월 이후로 그렇게하지 않았지만 여기에서 정말 멋진 도구를 만들었습니다.
Rob Fagen

답변:


136

다음을 살펴보아야합니다 pipdeptree.

$ pip install pipdeptree
$ pipdeptree -fl
Warning!!! Cyclic dependencies found:
------------------------------------------------------------------------
xlwt==0.7.5
ruamel.ext.rtf==0.1.1
xlrd==0.9.3
openpyxl==2.0.4
  - jdcal==1.0
pymongo==2.7.1
reportlab==3.1.8
  - Pillow==2.5.1
  - pip
  - setuptools

requirements.txt직접 지시 한대로 파일을 생성하지 않습니다 . 그러나 소스 (파이썬 코드의 255 줄)는 필요에 따라 비교적 쉽게 수정할 수 있어야합니다.

pipdeptree --freeze  --warn silence | grep -P '^[\w0-9\-=.]+' > requirements.txt

0.5 버전은 pipdeptree또한 --json가독성이 떨어지는 대신 기계 구문 분석이 더 쉬운 옵션을 사용하여 JSON 출력을 허용 합니다.


에 따르면 pypi.python.org/pypi/pipdeptree/0.3 , pipdeptree | grep -P '^\w+'requirements.txt를 인쇄합니다.
MERose

@MERose 지적 해 주셔서 감사합니다. 이 글을 썼을 때 버전 0.2를 사용하고 있었음에 틀림 없습니다.
Anthon 2016 년

작동하지 않습니다 bokeh핍을 표시하지 않도록이 패키지는 요구 사항의 특정 조직을 가지고 :(하지만 CONDA을 수행합니다.
Sklavit

12

경고 : py2 전용 / 포기

yolk 패키지에 대한 종속성을 표시 할 수 있습니다.

  • 통해 설치되었습니다 setuptools
  • 종속성 정보를 포함하는 메타 데이터와 함께 제공

    $ yolk -d Theano
    Theano 0.6.0rc3
      scipy>=0.7.2
      numpy>=1.5.0
    

감사. 이것은 완전한 솔루션은 아니지만 유용한 유틸리티입니다.
tbicr 2013-06-20

완전한 솔루션이 있는지 확실하지 않습니다. 문제는 종속성 정보가 항상 존재하지 않는다는 것입니다 (예 : distutils패키지 메타 데이터를 지원하지
않는를

5
노른자는 글을 쓰는 시점에서 py3k를 지원하지 않습니다.
yegle
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.