파이프 의존성/요구사항을 나열할 수 있는 방법이 있습니까?
설치를 진행하지 않고 모든 패키지를 빨리 보고 싶습니다.pip install
설치합니다.
제 프로젝트 조니뎁을 확인해 보세요!
설치:
pip install johnnydep
사용 예:
$ johnnydep requests
name summary
------------------------- ----------------------------------------------------------------------
requests Python HTTP for Humans.
├── certifi>=2017.4.17 Python package for providing Mozilla's CA Bundle.
├── chardet<3.1.0,>=3.0.2 Universal encoding detector for Python 2 and 3
├── idna<2.7,>=2.5 Internationalized Domain Names in Applications (IDNA)
└── urllib3<1.23,>=1.21.1 HTTP library with thread-safe connection pooling, file post, and more.
더 복잡한 트리:
$ johnnydep ipython
name summary
-------------------------------- -----------------------------------------------------------------------------
ipython IPython: Productive Interactive Computing
├── appnope Disable App Nap on OS X 10.9
├── decorator Better living through Python with decorators
├── jedi>=0.10 An autocompletion tool for Python that can be used for text editors.
│ └── parso==0.1.1 A Python Parser
├── pexpect Pexpect allows easy control of interactive console applications.
│ └── ptyprocess>=0.5 Run a subprocess in a pseudo terminal
├── pickleshare Tiny 'shelve'-like database with concurrency support
├── prompt-toolkit<2.0.0,>=1.0.4 Library for building powerful interactive command lines in Python
│ ├── six>=1.9.0 Python 2 and 3 compatibility utilities
│ └── wcwidth Measures number of Terminal column cells of wide-character codes
├── pygments Pygments is a syntax highlighting package written in Python.
├── setuptools>=18.5 Easily download, build, install, upgrade, and uninstall Python packages
├── simplegeneric>0.8 Simple generic functions (similar to Python's own len(), pickle.dump(), etc.)
└── traitlets>=4.2 Traitlets Python config system
├── decorator Better living through Python with decorators
├── ipython-genutils Vestigial utilities from IPython
└── six Python 2 and 3 compatibility utilities
이 테스트는 pip 버전 8.1.2, 9.0.1, 10.0.1 및 18.1을 사용하여 수행되었습니다.
Linux에서 현재 디렉터리를 혼란스럽게 하지 않고 출력을 얻으려면 다음을 사용합니다.
pip download [package] -d /tmp --no-binary :all: -v
-d
다운로드할 파일을 저장해야 하는 디렉터리를 pip에 알려줍니다.
패키지 이름 인수를 사용하여 종속성만 출력으로 가져오는 것이 좋습니다.
#!/bin/sh
PACKAGE=$1
pip download $PACKAGE -d /tmp --no-binary :all:-v 2>&1 \
| grep Collecting \
| cut -d' ' -f2 \
| grep -Ev "$PACKAGE(~|=|\!|>|<|$)"
여기서도 사용할 수 있습니다.
패키지가 설치된 경우에만pip show <package>
다음을 찾습니다.Requires:
필드를 입력합니다.분명히, 이것은 당신의 요구사항을 위반하지만 그럼에도 불구하고 유용할 수 있습니다.
예:
$ pip --version
pip 7.1.0 [...]
$ pip show pytest
---
Metadata-Version: 2.0
Name: pytest
Version: 2.7.2
Summary: pytest: simple powerful testing with Python
Home-page: http://pytest.org
Author: Holger Krekel, Benjamin Peterson, Ronny Pfannschmidt, Floris Bruynooghe and others
Author-email: holger at merlinux.eu
License: MIT license
Location: /home/usr/.tox/develop/lib/python2.7/site-packages
Requires: py
참고: 이 답변에 사용된 기능은 2014년에 더 이상 사용되지 않았으며 2015년에 제거되었습니다.현대식에 적용되는 다른 답변을 참조하십시오.
pip
.
Pip로 직접 접근할 수 있는 가장 가까운 방법은--no-install
인수:
pip install --no-install <package>
예를 들어 셀러리를 설치할 때의 출력은 다음과 같습니다.
Downloading/unpacking celery
Downloading celery-2.5.5.tar.gz (945Kb): 945Kb downloaded
Running setup.py egg_info for package celery
no previously-included directories found matching 'tests/*.pyc'
no previously-included directories found matching 'docs/*.pyc'
no previously-included directories found matching 'contrib/*.pyc'
no previously-included directories found matching 'celery/*.pyc'
no previously-included directories found matching 'examples/*.pyc'
no previously-included directories found matching 'bin/*.pyc'
no previously-included directories found matching 'docs/.build'
no previously-included directories found matching 'docs/graffles'
no previously-included directories found matching '.tox/*'
Downloading/unpacking anyjson>=0.3.1 (from celery)
Downloading anyjson-0.3.3.tar.gz
Running setup.py egg_info for package anyjson
Downloading/unpacking kombu>=2.1.8,<2.2.0 (from celery)
Downloading kombu-2.1.8.tar.gz (273Kb): 273Kb downloaded
Running setup.py egg_info for package kombu
Downloading/unpacking python-dateutil>=1.5,<2.0 (from celery)
Downloading python-dateutil-1.5.tar.gz (233Kb): 233Kb downloaded
Running setup.py egg_info for package python-dateutil
Downloading/unpacking amqplib>=1.0 (from kombu>=2.1.8,<2.2.0->celery)
Downloading amqplib-1.0.2.tgz (58Kb): 58Kb downloaded
Running setup.py egg_info for package amqplib
Successfully downloaded celery anyjson kombu python-dateutil amqplib
물론 이것은 임시 파일의 형태로 일부를 남기기는 하지만 목표를 달성합니다.virtualenv(가상화 환경)에서 이 작업을 수행하는 경우 정리 작업은 가상 환경을 제거하는 것만큼 쉽습니다.<virtualenv root>/build
디렉토리입니다.
@onnovalkering의 대안 솔루션을 인용합니다.
PyPi는 패키지 메타데이터가 포함된 JSON 끝점을 제공합니다.
>>> import requests >>> url = 'https://pypi.org/pypi/{}/json' >>> json = requests.get(url.format('pandas')).json() >>> json['info']['requires_dist'] ['numpy (>=1.9.0)', 'pytz (>=2011k)', 'python-dateutil (>=2.5.0)'] >>> json['info']['requires_python'] '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*'
특정 패키지 버전의 경우 다음 URL에 버전 세그먼트를 추가합니다.
https://pypi.org/pypi/pandas/0.22.0/json
또한 콘다를 사용하는 경우(@ShpielMeister에서 제안한 대로) 다음을 사용할 수 있습니다.
conda info package==X.X.X
특정 버전에 대한 종속성 또는 다음과 같은 정보를 표시합니다.
conda info package
해당 패키지의 지원되는 모든 버전에 대한 종속성을 포함한 정보를 표시합니다.
pipdeptree 사용(pip install pipdeptree
). 패키지를 설치해야 합니다.
$ pipdeptree -p pandas
pandas==1.2.2
- numpy [required: >=1.16.5, installed: 1.19.5]
- python-dateutil [required: >=2.7.3, installed: 2.8.1]
- six [required: >=1.5, installed: 1.15.0]
- pytz [required: >=2017.3, installed: 2021.1]
johnyohnnydep) 사용pip install johnnydep
) 패키지의 휠을 다운로드하기 때문에 속도가 느립니다.
$ johnnydep pandas
2021-06-09 11:01:21 [info ] init johnnydist [johnnydep.lib] dist=pandas parent=None
2021-06-09 11:01:22 [info ] init johnnydist [johnnydep.lib] dist=numpy>=1.16.5 parent=pandas
2021-06-09 11:01:22 [info ] init johnnydist [johnnydep.lib] dist=python-dateutil>=2.7.3 parent=pandas
2021-06-09 11:01:23 [info ] init johnnydist [johnnydep.lib] dist=pytz>=2017.3 parent=pandas
2021-06-09 11:01:23 [info ] init johnnydist [johnnydep.lib] dist=six>=1.5 parent=python-dateutil>=2.7.3
name summary
-------------------------- -----------------------------------------------------------------------
pandas Powerful data structures for data analysis, time series, and statistics
├── numpy>=1.16.5 NumPy is the fundamental package for array computing with Python.
├── python-dateutil>=2.7.3 Extensions to the standard Python datetime module
│ └── six>=1.5 Python 2 and 3 compatibility utilities
└── pytz>=2017.3 World timezone definitions, modern and historical
사용 방법에 대한 부록일 뿐입니다.johnnydep
.
- 요구 사항에 대한 종속성을 가지려면 다음과 같이 하십시오.txt 형식:
johnnydep pandas --output-format=pinned
pandas==1.4.1
numpy==1.22.3
python-dateutil==2.8.2
pytz==2021.3
six==1.16.0
위의 목록은 다음 주소로 작성됩니다.stdout
수집하는 동안 정보 메시지는 다음에 쓰여집니다.stderr
(bash 또는 하위 프로세스를 사용하여 출력을 캡처하려는 경우).
- CLI 대신 Python에서 호출:
import sys, johnnydep.cli
sys.argv = ["", "pandas"]
johnnydep.cli.main()
저는 이러한 대답들이 구식이고 지금 더 나은 해결책이 있다고 생각합니다.원본 게시물:
생성방을 생성하는 requirements.txt
에 나열된 install_requires
의 신의에setup.cfg
또는setup.py
를 설치해야 합니다.
pip install pip-tools
pip-compile
을 requirements.txt
패정포파일에 지정된 된 파일extras_requires
위해서tests
그리고.dev
:
pip-compile --extra tests --extra devrequirements.txt file with packages listed under
또한 다음과 같은 기능을 사용할 수 있습니다.requirements.in
대신 파일을 작성합니다.setup.cfg
또는setup.py
요구 사항을 나열합니다.
pip-compile requirements.in
@Jmills 답변에 대한 업데이트로, 지원하는 최신 pip 버전의 경우--dry-run
옵션:
#!/bin/sh
PACKAGE=$1
pip install $PACKAGE --dry-run --ignore-installed \
| grep Collecting \
| cut -d' ' -f2 \
| sed -E 's/([><=!]=|[><]).*//g'
pip install <package> --download <path>
7.0.0 (2015-05-21) 기준으로, @radtek의 코멘트에 언급된 바와 같이 --no-install은 에서 제거됩니다.pip
이 필요종다다로 됩니다.<path>
.
다른 옵션은 다음과 같은 도우미 스크립트를 사용하는 것입니다.pip.req.parse_requirements
구문분할 API를 구문 분석하는 requirements.txt
및 a.distutils.core.setup
구문 분석으로 합니다.setup.py
files 파일
언급URL : https://stackoverflow.com/questions/11147667/is-there-a-way-to-list-pip-dependencies-requirements
'code' 카테고리의 다른 글
입력된 배열이 비어 있는 초기 상태를 입력하고 초기 상태를 설정합니다. (0) | 2023.07.17 |
---|---|
장고: 쿼리를 통해 열 값의 합 계산 (0) | 2023.07.17 |
pandas.read_message 매개 변수 "sheet_name"이(가) 작동하지 않습니다. (0) | 2023.07.17 |
빈 셀을 "NA"로 변경 (0) | 2023.07.17 |
IndexError: 목록 인덱스가 범위를 벗어남, 데이터베이스에서 항목 1개를 가져오는 동안 오류가 발생했습니다. (0) | 2023.07.17 |