स्क्वायर ब्रैकेट्स का मतलब पाइप इंस्टॉल में क्या है?


107

मैं इस तरह से अधिक से अधिक आदेशों को देखता हूं:

$ pip install "splinter[django]"

ये वर्ग कोष्ठक क्या करते हैं?




ध्यान दें कि यह होना चाहिए pip install "splinter[django]", पैटर्न के किसी भी आकस्मिक खोल विस्तार से बचने के लिए।
चेपनर

@ रेयान ओके अब इसे एक उचित उत्तर के रूप में जोड़ें और मैं इसे स्वीकार करूंगा।
बेबकेन वर्दयान

@chepner अच्छा बिंदु, मैंने पोस्ट को संपादित किया।
बेबकेन वर्दयान

जवाबों:


87

आपके द्वारा उपयोग किया जा रहा वाक्यविन्यास है:

pip install "project[extra]"

आपके मामले में, आप installingवह splinterपैकेज हैं जिसके लिए अतिरिक्त समर्थन है django। वर्ग कोष्ठक ( []) विशिष्ट सिंटैक्स नहीं हैं, बस सम्मेलन। वास्तव में, आप नाम के पैकेज को स्थापित कर रहे हैं "splinter[django]":।

से एक स्पष्टीकरण @chetner:

कमांड pip install splinter djangoदो पैकेज नामित करेगा splinterऔर djangosplinter[django]दूसरी ओर, splinterपैकेज का एक संस्करण स्थापित करता है जिसमें समर्थन शामिल है django। ध्यान दें कि इसका djangoपैकेज से कोई लेना-देना नहीं है, लेकिन splinterएक विशेष सुविधा सेट के लिए पैकेज द्वारा परिभाषित एक स्ट्रिंग है जो सक्षम हो जाती है।


1
अपने उत्तर पर विस्तार करने की देखभाल करें ताकि भविष्य के उपयोगकर्ता लाभान्वित हो सकें? उदाहरण के लिए क्या extraमतलब है?
बब्केन वर्दयान

6
@BabkenVardanyan यह कमांड दो पैकेज नामित splinterऔर स्थापित करेगा djangosplinter[django]दूसरी ओर, splinterपैकेज का एक संस्करण स्थापित करता है जिसमें समर्थन शामिल है django। ध्यान दें कि इसका djangoपैकेज से कोई लेना-देना नहीं है, लेकिन splinterएक विशेष सुविधा सेट के लिए पैकेज द्वारा परिभाषित एक स्ट्रिंग है जो सक्षम हो जाती है।
चेपनर

6
splinterअभी भी पैकेज का नाम है; pipस्वयं पार्स करता है splinter[django]और इसे सही फ़ाइलों को स्थापित करने में मदद करने के लिए एक अतिरिक्त "तर्क" के साथ पैकेज नाम के रूप में पहचानता है। तर्क djangoकी व्याख्या कैसे की जाती है यह पूरी तरह से setup.pyफाइल (या कुछ अन्य कॉन्फिगर फाइल के लिए है? मुझे वास्तव में जानकारी नहीं है) पैकेज को परिभाषित करने के लिए उपयोग किया जाता है splinter
चेपनर

1
मेरा मानना ​​है कि केवल एक ही चीज [अतिरिक्त] सिंटैक्स करती है जो एक्स्ट्रा_सक्वायर्स से अतिरिक्त निर्दिष्ट होती है जो स्थापित होगी। यही है, pip install splinterकी तुलना में कम आवश्यकताओं को स्थापित करेगा pip install splinter[django]। जो अतिरिक्त पैकेज स्थापित हैं, वे वास्तव में काम कर सकते हैं (और शायद करते हैं) स्प्लिटर की अतिरिक्त विशेषताओं को काम करने में सक्षम बनाता है, लेकिन यह स्प्लिन्टर पैकेज के बारे में कुछ भी नहीं बदलता है। यह सिर्फ अतिरिक्त निर्भरता के बारे में पाइप बताता है।
विलियम पर्ससेल

7
मुझे लगता है कि यह उत्तर गलत है। यह एक "स्प्लिंटर [django]" पैकेज को स्थापित नहीं करता है, बल्कि स्प्लिंटर और Django दोनों परियोजनाओं को स्थापित करता है। ये सेटपूल एक्स्ट्रा हैं जैसा कि @paul और प्रोस्टी के जवाबों में बताया गया है
user1523170

25

[optional]पीआईपी में ब्रैकेट वैकल्पिक निर्भरता को दर्शाता है

बस एक और डेवलपर अपने स्वयं के पायथन पैकेज परिनियोजन में इस पैटर्न को लागू करने की तलाश में आता है, यहां brackets []पाइप में आगे की व्याख्या की गई है।

उदाहरण के लिए: अपाचे एयरफ्लो

पाइपairflow से स्थापित करने के लिए हम इस कमांड का उपयोग करते हैं:

pip install 'apache-airflow'

आप के साथ 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

कभी-कभी किसी परियोजना में "अनुशंसित" निर्भरताएं होती हैं, जो परियोजना के सभी उपयोगों के लिए आवश्यक नहीं होती हैं। उदाहरण के लिए, एक प्रोजेक्ट वैकल्पिक PDF आउटपुट की पेशकश कर सकता है यदि ReportLab स्थापित किया गया है, और डॉकुटिल्स स्थापित होने पर 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

पाइप मैनुअल के अनुसार

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.