Saya melihat semakin banyak perintah seperti ini:
$ pip install "splinter[django]"
Apa yang dilakukan tanda kurung siku ini?
python
pip
dependency-management
Babken Vardanyan
sumber
sumber
pip install "splinter[django]"
, untuk menghindari perluasan pola cangkang yang tidak disengaja.Jawaban:
Sintaks yang Anda gunakan adalah:
pip install "project[extra]"
Dalam kasus Anda, Anda
installing
yangsplinter
paket yang memiliki dukungan ditambahkan untukdjango
. Tanda kurung siku ([]
) bukanlah sintaks spesifik, hanya konvensi. Benar-benar, Anda menginstal paket bernama:"splinter[django]"
.Penjelasan dari
@chetner
:sumber
extra
artinya?splinter
dandjango
.splinter[django]
, di sisi lain, menginstal variansplinter
paket yang berisi dukungan untukdjango
. Perhatikan bahwa ini tidak ada hubungannya dengandjango
paket itu sendiri, tetapi hanya string yang ditentukan olehsplinter
paket untuk set fitur tertentu yang diaktifkan.splinter
masih merupakan nama paket;pip
itu sendiri memsplinter[django]
- parsing dan mengenalinya sebagai nama paket dengan "argumen" tambahan untuk membantunya menginstal file yang benar. Bagaimana argumendjango
diinterpretasikan sepenuhnya tergantung padasetup.py
file (atau file konfigurasi lainnya? Saya tidak benar-benar tahu detailnya) yang digunakan untuk mendefinisikan paketsplinter
.pip install splinter
akan menginstal lebih sedikit persyaratan daripip install splinter[django]
. Paket tambahan yang diinstal mungkin (dan mungkin memang) memungkinkan fitur tambahan dari splinter untuk bekerja, tetapi itu tidak mengubah apapun tentang paket splinter itu sendiri. Ini hanya memberi tahu pip tentang dependensi tambahan.Tanda kurung
[optional]
di PIP menandakan dependensi opsionalUntuk berjaga-jaga jika ada pengembang lain yang ingin mengimplementasikan pola ini dalam penerapan paket Python mereka sendiri, berikut penjelasan lebih lanjut tentang
brackets []
in pip.Misalnya: Apache Airflow
Untuk menginstal
airflow
dari pip kami menggunakan perintah ini:pip install 'apache-airflow'
Anda dapat memasang komponen opsional aliran udara dengan:
pip install 'apache-airflow[aws]' # [optional] -----------^
Ketika kami mencari pypi untuk
apache-airflow
catatan bahwa paket opsional tidak muncul: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 ...
Implementasi melalui
setup.py
Anda dapat melihat bagaimana ini dilakukan dalam
setup.py
skripDi sebelah kiri dalam
setup.py
-extras_require
didefinisikan.Di sebelah kanan adalah perintah instalasi terkait untuk sub-paket opsional ini.
sumber
Cukup yakin ini adalah ekstra setuptools:
https://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-their-own-dependencies
sumber
Ini persis dengan daftar dari
setup.py
file untuk proyek yang dimaksud :"django": ["Django>=1.7.11;python_version<'3.0'", "Django>=2.0.6;python_version>'3.3'", "lxml>=2.3.6", "cssselect", "six"],
sumber