ピップインストールで角括弧はどういう意味ですか?


107

私はこのようなコマンドをますます見ています:

$ pip install "splinter[django]"

これらの角括弧は何をしますか?




パターンの偶発的なシェル拡張を避けるために、そうする必要があることに注意してくださいpip install "splinter[django]"
chepner 2017年

@Ryan Okはそれを適切な答えとして追加し、私はそれを受け入れます。
Babken Vardanyan 2017年

@chepner良い点、私は投稿を編集しました。
Babken Vardanyan 2017年

回答:


87

使用している構文は次のとおりです。

pip install "project[extra]"

あなたの場合、あなたはinstallingsplinterサポートが追加されたパッケージですdjango。角括弧([])は特定の構文ではなく、単なる慣例です。実際には、次の名前のパッケージをインストールしています"splinter[django]"

からの説明@chetner

このコマンドpip install splinter djangosplinter、とという名前の2つのパッケージをインストールしますdjangosplinter[django]一方、バリアントのインストールsplinterが含まれたパッケージのサポートのためにdjango。これはdjangoパッケージ自体とは関係がなく、splinter有効になる特定の機能セットに対してパッケージによって定義された文字列にすぎないことに注意してください。


1
将来のユーザーが利益を得ることができるようにあなたの答えを拡大することに気をつけますか?たとえば、どういうextra意味ですか?
Babken Vardanyan 2017年

6
@BabkenVardanyanこのコマンドはsplinter、とという名前の2つのパッケージをインストールしますdjangosplinter[django]一方、のsplinterサポートを含むパッケージのバリアントをインストールしますdjango。これはdjangoパッケージ自体とは関係がなく、splinter有効になる特定の機能セットに対してパッケージによって定義された文字列にすぎないことに注意してください。
chepner 2017年

6
splinterまだパッケージ名です。pipそれ自体が解析しsplinter[django]、正しいファイルをインストールするのに役立つ追加の「引数」を含むパッケージ名として認識します。引数djangoがどのように解釈されるsetup.pyかは、パッケージを定義するために使用されるファイル(または他の構成ファイル?私は実際には詳細を知りません)に完全に依存しますsplinter
chepner 2017年

1
[extra]構文が行う唯一のことは、インストールされるextras_requiresから追加を指定することだと思います。つまり、pip install splinterインストールする要件はpip install splinter[django]。よりも少なくなります。インストールされた追加のパッケージは、実際に(そしておそらくそうする)splinterの追加機能を機能させる可能性がありますが、splinterパッケージ自体については何も変更しません。追加の依存関係についてpipに通知するだけです。
WilliamPursell18年

7
この答えは間違っていると思います。これは「splinter [django]」パッケージをインストールするのではなく、splinterプロジェクトとDjangoプロジェクトの両方をインストールします。これらは、@ paulとprostiによる回答で説明されているsetuptoolsエクストラです
user15231

25

[optional]PIPの括弧は、オプションの依存関係を示します

別の開発者がこのパターンを独自のPythonパッケージデプロイメントに実装しようとしている場合に備えて、ここbrackets []でinpipの詳細な説明を示します。

例: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.pyextras_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"],

0

このオプションのパッケージ構文では、次のように複数のエクストラ(角かっこ内のコンマで区切る)が許可されていることを知っておく価値があります。

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

あたりとしてピップマニュアル

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.