বর্গাকার বন্ধনীর অর্থ পাইপ ইনস্টলের অর্থ কী?


100

আমি আরও এইরকম কম্যান্ড দেখতে পাচ্ছি:

$ pip install "splinter[django]"

এই বর্গাকার বন্ধনীগুলি কী করে?




নোট করুন যে এটি হওয়া উচিত pip install "splinter[django]", প্যাটার্নটির কোনও দুর্ঘটনাজনক শেল প্রসার এড়াতে।
চিপনার

@ রায়ান ওকে এখন এটি যথাযথ উত্তর হিসাবে যুক্ত করুন এবং আমি এটি গ্রহণ করব।
বাবকেন বর্ধনিয়ান

@ চেপনার ভাল পয়েন্ট, আমি পোস্টটি সম্পাদনা করেছি।
বাবকেন বর্ধনিয়ান

উত্তর:


80

আপনি যে বাক্য গঠনটি ব্যবহার করছেন তা হ'ল:

pip install "project[extra]"

আপনার ক্ষেত্রে, আপনি হয় প্যাকেজ, যার জন্য যোগ সমর্থন আছে । বর্গাকার বন্ধনীগুলি নির্দিষ্ট সিনট্যাক্স নয়, কেবল কনভেনশন। সত্যিই, আপনি প্যাকেজ নামে ইনস্টল করছেন: ।installingsplinterdjango[]"splinter[django]"

থেকে একটি ব্যাখ্যা @chetner:

কমান্ডটি pip install splinter djangoদুটি splinterএবং প্যাকেজ নামের প্যাকেজ ইনস্টল করবে djangosplinter[django]অন্যদিকে, splinterপ্যাকেজের একটি বৈকল্পিক ইনস্টল করে যার জন্য সমর্থন রয়েছে django। নোট করুন যে djangoপ্যাকেজটি নিজেই এটির সাথে কোনও সম্পর্কযুক্ত নয়, তবে কেবলমাত্র splinterএকটি নির্দিষ্ট বৈশিষ্ট্য সেটের জন্য প্যাকেজ দ্বারা সংজ্ঞায়িত একটি স্ট্রিং যা সক্ষম হয়ে যায়।


4
আপনার উত্তরটি প্রসারিত করার যত্ন তাই ভবিষ্যতের ব্যবহারকারীরা উপকৃত হতে পারেন? উদাহরণস্বরূপ extraমানে কি?
বাবকেন বর্ধনিয়ান

6
@ ব্যাবকেনওয়ার্ডানিয়ান এই কমান্ডটিতে দুটি splinterএবং প্যাকেজ নামের প্যাকেজ ইনস্টল করা হবে djangosplinter[django]অন্যদিকে, splinterপ্যাকেজের একটি বৈকল্পিক ইনস্টল করে যার জন্য সমর্থন রয়েছে django। নোট করুন যে djangoপ্যাকেজটি নিজেই এটির সাথে কোনও সম্পর্কযুক্ত নয়, তবে কেবলমাত্র splinterএকটি নির্দিষ্ট বৈশিষ্ট্য সেটের জন্য প্যাকেজ দ্বারা সংজ্ঞায়িত একটি স্ট্রিং যা সক্ষম হয়ে যায়।
চিপনার

4
splinterএখনও প্যাকেজের নাম; এটিকে সঠিক ফাইল ইনস্টল করতে সহায়তা করার জন্য একটি অতিরিক্ত "যুক্তি" সহ এটি প্যাকেজের নাম হিসাবে pipবিশ্লেষণ করে splinter[django]এবং স্বীকৃতি দেয়। কিভাবে যুক্তি djangoব্যাখ্যা করা হয় সম্পূর্ণরূপে আপ setup.pyফাইল প্যাকেজ নির্ধারণ করতে ব্যবহৃত (অথবা অন্য কোনো কনফিগ ফাইল? আমি আসলে বিস্তারিত জানতে না) splinter
চিপনার

4
আমি বিশ্বাস করি যে কেবলমাত্র [অতিরিক্ত] সিনট্যাক্সটি কেবল অতিরিক্ত যা প্রয়োজন তা ইনস্টল করা হবে from অর্থাৎ এর pip install splinterচেয়ে কম প্রয়োজনীয়তা ইনস্টল করবে pip install splinter[django]। ইনস্টল করা অতিরিক্ত প্যাকেজগুলি স্প্লিন্টারের অতিরিক্ত বৈশিষ্ট্যগুলি কার্যত সক্ষম করতে পারে (এবং সম্ভবত এটি করে) তবে এটি স্প্লিন্টার প্যাকেজ সম্পর্কে নিজেই কিছু পরিবর্তন করে না। এটি কেবল অতিরিক্ত নির্ভরতা সম্পর্কে পাইপকে জানায়।
উইলিয়াম পার্সেল

6
আমি মনে করি এই উত্তরটি ভুল। এটি একটি "স্প্লিন্টার [জাজানো]" প্যাকেজ ইনস্টল করে না, বরং স্প্লিন্টার এবং জ্যাঙ্গো উভয়ই প্রকল্প রয়েছে। এগুলি @ পল এবং প্রোস্টি দ্বারা উত্তরে বর্ণিত হিসাবে সেটআপ টলগুলি অতিরিক্ত
ব্যবহারকারী 1523170

19

[optional]পিআইপি-তে বন্ধনীগুলি alচ্ছিক নির্ভরতা বোঝায়

ঠিক তেমন ক্ষেত্রে অন্য বিকাশকারী তাদের নিজস্ব পাইথন প্যাকেজ মোতায়েনের মধ্যে এই প্যাটার্নটি বাস্তবায়নের সন্ধান করতে এসেছেন, brackets []পিপ- এর আরও ব্যাখ্যা এখানে ।

উদাহরণস্বরূপ: অ্যাপাচি এয়ারফ্লো

পাইপairflow থেকে ইনস্টল করতে আমরা এই আদেশটি ব্যবহার করি:

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সংজ্ঞায়িত হয়েছে।
এই optionচ্ছিক সাব-প্যাকেজগুলির জন্য ডানদিকে সংযুক্ত ইনস্টলেশন কমান্ড রয়েছে।

setup.py বনাম ইনস্টল


12

খুব নিশ্চিত যে এগুলি সেটআপলগুলিতে অতিরিক্ত রয়েছে:

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

কখনও কখনও কোনও প্রকল্পের "প্রস্তাবিত" নির্ভরতা হয়, যা প্রকল্পের সমস্ত ব্যবহারের জন্য প্রয়োজন হয় না। উদাহরণস্বরূপ, কোনও প্রকল্প রিপোর্টল্যাব ইনস্টল করা থাকলে alচ্ছিক পিডিএফ আউটপুট এবং ডকুমেন্টাল ইনস্টল করা থাকলে পুনর্গঠিত টেক্সট সমর্থন করতে পারে। এই alচ্ছিক বৈশিষ্ট্যগুলিকে "অতিরিক্ত" বলা হয় ...


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"],
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.