pip 설치에서 대괄호는 무엇을 의미합니까?


109

다음과 같은 명령이 점점 더 많이 표시됩니다.

$ pip install "splinter[django]"

이 대괄호는 무엇을합니까?




참고는 것을 해야pip install "splinter[django]", 패턴의 실수로 쉘 확장을 방지 할 수 있습니다.
chepner

@Ryan Ok는 이제 올바른 대답으로 추가하고 수락하겠습니다.
Babken의 Vardanyan

@chepner 좋은 지적, 게시물을 편집했습니다.
Babken의 Vardanyan

답변:


88

사용중인 구문은 다음과 같습니다.

pip install "project[extra]"

귀하의 경우 귀하 는에 대한 추가 지원 이 installing있는 splinter패키지입니다 django. 대괄호 ( [])는 특정 구문이 아니라 관례 일뿐입니다. 실제로라는 패키지를 설치하고 "splinter[django]"있습니다.

의 설명 @chetner:

이 명령 pip install splinter djangosplinter및 라는 두 개의 패키지를 설치합니다 django. splinter[django]반면 splinter에는에 대한 지원 을 포함 하는 패키지 변형을 설치합니다 django. django패키지 자체 와는 아무런 관련이 없지만 splinter활성화되는 특정 기능 세트 에 대해 패키지에서 정의한 문자열 일뿐 입니다.


1
향후 사용자가 혜택을 볼 수 있도록 답변을 확장하고 싶으십니까? 예를 들어 무엇을 extra의미합니까?
Babken Vardanyan

6
@BabkenVardanyan이 명령은 splinterdjango. splinter[django]반면 splinter에는에 대한 지원을 포함 하는 패키지 변형을 설치합니다 django. django패키지 자체 와는 아무런 관련이 없지만 splinter활성화되는 특정 기능 세트 에 대해 패키지에서 정의한 문자열 일뿐 입니다.
chepner

6
splinter여전히 패키지 이름입니다. pip자체적으로 splinter[django]올바른 파일을 설치하는 데 도움이되도록 추가 "인수"가있는 패키지 이름으로 구문 분석 하고 인식합니다. 인수 django가 해석되는 방법은 setup.py패키지를 정의하는 데 사용되는 파일 (또는 다른 구성 파일? 실제로 세부 정보를 알지 못함)에 따라 다릅니다 splinter.
chepner

1
[extra] 구문이하는 유일한 일은 설치 될 extras_requires에서 추가를 지정하는 것입니다. 즉, pip install splinter보다 적은 요구 사항을 설치 pip install splinter[django]합니다. 설치된 추가 패키지는 실제로 스플린터의 추가 기능이 작동하도록 할 수 있지만 스플린터 패키지 자체에 대해서는 아무것도 변경하지 않습니다. 추가 종속성에 대해 pip에게 알려줍니다.
William Pursell

7
이 대답은 잘못된 것 같습니다. 이것은 "splinter [django]"패키지를 설치하지 않고 오히려 splinter와 Django 프로젝트를 모두 설치합니다. @paul과 prosti의 답변에 설명 된 setuptools 추가 기능입니다.
user1523170

26

[optional]PIP의 대괄호 는 선택적 종속성을 나타냅니다.

다른 개발자가 자신의 Python 패키지 배포에서이 패턴을 구현하려는 경우를 대비하여 brackets []in pip에 대한 추가 설명이 있습니다.

예 : Apache Airflow

pipairflow 에서 설치하려면 다음 명령을 사용합니다.

pip install 'apache-airflow'

다음을 사용 하여 공기 흐름의 선택적 구성 요소를 설치할 수 있습니다 .

pip install 'apache-airflow[aws]'
#      [optional] -----------^

우리가 때 검색 pypi을 위한 apache-airflow참고 옵션 패키지를 표시하지 않는 것이 :

pip search 'apache-airflow'

apache-airflow (1.10.9)                            - Programmatically author, schedule and monitor data pipelines
pylint-airflow (0.1.0a1)                           - A Pylint plugin to lint Apache Airflow code.
swe-airflow-tools (0.0.3)                          - Tools for Apache Airflow Application
airflow (0.6)                                      - Placeholder for the old Airflow package
...

다음을 통한 구현 setup.py

이 작업이 수행 된 방법은 setup.py 스크립트
에서 왼쪽에 setup.py- extras_require정의되어 있습니다.
오른쪽에는 이러한 선택적 하위 패키지에 대한 상관 설치 명령이 있습니다.

setup.py 대 설치


12

다음은 setuptools 추가 사항입니다.

https://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-their-own-dependencies

때로는 프로젝트의 모든 용도에 필요하지 않은 "권장"종속성이있는 경우가 있습니다. 예를 들어 프로젝트는 ReportLab이 설치된 경우 선택적 PDF 출력을 제공하고 docutils가 설치된 경우 reStructuredText 지원을 제공 할 수 있습니다. 이러한 선택적 기능을 "추가"라고합니다.


4

이것은 문제setup.py 의 프로젝트에 대한 파일 의 목록입니다 .

"django": ["Django>=1.7.11;python_version<'3.0'", "Django>=2.0.6;python_version>'3.3'", "lxml>=2.3.6", "cssselect", "six"],

1

이 선택적 패키지 구문은 다음과 같이 여러 개의 추가 항목 (괄호 안에 쉼표로 구분)을 허용한다는 것을 아는 것이 좋습니다.

python -m pip install SomePackage[PDF,EPUB]  # multiple extras

당으로 핍 설명서

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.