जब git repo से पाइप स्थापित करते समय # अंडा = फू


95

जब मैं एक git रेपो से स्थापित करने के लिए "पाइप इंस्टॉल-ई ..." करता हूं, तो मुझे # अंडा = somename या पाइप को निर्दिष्ट करना होगा। उदाहरण के लिए:

pip install -e git://github.com/hiidef/oauth2app.git#egg=oauth2app

इस "अंडे" स्ट्रिंग का क्या महत्व है?


pip installप्रलेखन के इस भाग के बारे में बात #egg=nameकरता है, लेकिन एक स्पष्ट जवाब नहीं देता है।
क्रिश्चियन लॉन्ग

जवाबों:


35

प्रति पाइप स्थापित -h में "अंडा" स्ट्रिंग निर्देशिका है जो इंस्टॉल के हिस्से के रूप में जांच की जाती है


12
क्या यह सिर्फ रिपॉजिटरी के समान नाम हो सकता है? क्या मामले मायने रखते हैं?
CMCDragonkai

14
"वह निर्देशिका जो चेक आउट हो जाती है"? तो क्या मैं शाखा का नाम दर्ज करूं? कुछ अच्छा करो?
क्रिस

1
यदि आपने एक कस्टम पायथन पैकेज बनाया है, जब आप सेटओपूल चला रहे हैं, तो एक निर्देशिका नाम project-name.egg-info/top_level.txtबनाया जाना चाहिए था। eggपैरामीटर के लिए मान के रूप में इस फ़ाइल की सामग्री का उपयोग करें ।
dspacejs

2
अगर egg=...सेटिंग वास्तव में मायने रखती है तो मुझे यह पता नहीं लग सकता है। मैं जो पैकेज स्थापित कर रहा हूं उसमें top_level.txt फ़ाइल में कई प्रविष्टियाँ हैं। मैंने इसका nameउपयोग उस कंवर से करने के लिए किया है जो स्क्रिप्ट उपयोग करता है, setup.pyलेकिन एक मनमाना मूल्य भी। परिणाम एक ही तरह से होने लगते हैं। ध्यान दें कि मैं pip install https://...सिंटैक्स का उपयोग करके स्थापित कर रहा हूं जिसकी आवश्यकता नहीं है -e
टेलर एड्मिस्टन

7

आपको # अंडा = पैकेज शामिल करना होगा ताकि पाइप को पता चल सके कि उस URL पर क्या अपेक्षा है। Https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support देखें

अंडे पर अधिक


19
इसका क्या मतलब है "तो पाइप जानता है कि उस यूआरएल पर क्या उम्मीद है?" क्या #egg के अलावा भी कुछ ऐसा है जो उस तरह के url के लिए मान्य है?
लोरिन होचस्टीन

मैं वास्तव में विल के जवाब को पसंद करता हूं pip install -h, Source will be checked out into src/PACKAGE (lower-case) and installed in-place (using setup.py develop)मुझे यकीन नहीं है कि इसका इस्तेमाल कहीं और किया गया है ...
स्काईलार सेवलैंड

यह क्लोन है, लेकिन स्थापित नहीं :(
Holms

6

https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support कहता है:

Url प्रत्यय "egg = -" के "प्रोजेक्ट नाम" घटक का उपयोग पाइप पर निर्भरता लॉजिक में मेटाडेटा को डाउनलोड करने और विश्लेषण करने से पहले प्रोजेक्ट की पहचान करने के लिए किया जाता है। अंडे के नाम का वैकल्पिक "संस्करण" घटक कार्यात्मक रूप से महत्वपूर्ण नहीं है। यह केवल मानव-पठनीय सुराग प्रदान करता है कि संस्करण किस उपयोग में है। उन प्रोजेक्ट्स के लिए जहां setup.py परियोजना की जड़ में नहीं है, "उपनिर्देशिका" घटक का उपयोग किया जाता है। "उपनिर्देशिका" घटक का मान प्रोजेक्ट के रूट से शुरू होने वाला एक पथ होना चाहिए जहां setup.py स्थित है।

इससे मुझे लगता है कि अंडा मूल्य केवल निर्भरता जांच के लिए उपयोग किया जाता है और इसलिए मुझे लगता है कि, कन्वेंशन द्वारा, पैकेज नाम (यानी some-pypi-package-name) का उपयोग किया जाना चाहिए, न कि किसी भी निहित फ़ोल्डर (यानी some_pypi_package_name)


5

एक अंडा सिर्फ कुछ बंडल अजगर कोड है । Git url में, अंडे प्रोजेक्ट नाम है। वीसीएस समर्थन

आम तौर पर हम Pypi से अजगर पैकेज स्थापित करते हैं, इसलिए आप केवल पैकेज का नाम और संस्करण निर्दिष्ट करते हैं (या यदि आप निर्दिष्ट नहीं करते हैं तो यह नवीनतम संस्करण मानता है)। Pypi तब खोजती है कि आप कौन सा अंडा चाहते हैं और पाइप उसे स्थापित करता है। pip install celeryनवीनतम प्रकाशित अंडे pip install celery[redis]को स्थापित करेगा और एक अलग अंडे को स्थापित करेगा जिसमें एक ही अजवाइन पैकेज होता है और जो भी पैकेज से अजवाइन के सेटअपफ्रीड में रेडिस के लिए निर्भरता के रूप में सूचीबद्ध थे उनमें से नवीनतम अंडे भी स्थापित करता है।

गिट और गिटलैब पथ के साथ, आप निर्दिष्ट करते हैं /{user|group}/{repository}.git@{tag}#egg={package-name}। वहाँ के बीच एक अंतर है #egg=celeryऔर #egg=celery[redis]है, लेकिन वे दोनों एक ही स्रोत कोड से आ जाएगा।

"टैग" एक वास्तविक टैग के अतिरिक्त एक शाखा या प्रतिबद्ध हैश भी हो सकता है। masterयदि आप निर्दिष्ट नहीं करते हैं तो यह माना जाता है ।

उदाहरण के लिए, git+https://github.com/celery/celery.git#egg=celery==4.3.0मास्टर शाखा की जाँच करेगा और उसे स्थापित करेगा। भले ही आपने संस्करण संख्या निर्दिष्ट की हो, लेकिन इसे संस्थापन में ध्यान में नहीं रखा गया है। संस्करण संख्या IGNORED है

गिट या अन्य वीसीएस यूआरएल के माध्यम से स्थापित करते समय, आप उस संस्करण का टैग या हैश ढूंढना चाहेंगे जो आपको चाहिए। उदाहरण के लिए, git+https://github.com/celery/celery.git@v4.3.0#egg=celeryजो कमिट किए गए टैग "v4.3.0" को चेकआउट करेगा और फिर उस सोर्स कोड से पैकेज इंस्टॉल करेगा। मानने वालों ने यह नहीं माना कि उनकी रिपॉजिटरी को गलत तरीके से टैग नहीं किया गया है, आप जैसा चाहें वैसा वर्जन प्राप्त कर सकते हैं।

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