मैं विशिष्ट संस्करण सीमा पर निर्भर करने के लिए एक पैकेज बनाना चाहता हूं उदा। >= 0.5.0, < 0.7.0
। क्या यह install_requires
विकल्प में संभव है, और यदि ऐसा है तो यह कैसे होना चाहिए?install_requires (setuptools, वितरण) में संस्करण श्रेणियों को निर्दिष्ट करने के लिए कैसे करें
उत्तर
the documentation के अनुसार, आपका वाक्यविन्यास सही तरीके से काम करना चाहिए। प्रलेखन कहा गया है कि:
setuptools
औरpkg_resources
एक परियोजना की आवश्यकता निर्भरता निर्दिष्ट करने के लिए एक आम सिंटैक्स का उपयोग करें। इस वाक्यविन्यास में प्रोजेक्ट के पीईपीआई नाम होते हैं, वैकल्पिक रूप से स्क्वायर ब्रैकेट में "अतिरिक्त" की अल्पविराम से अलग सूची के बाद, वैकल्पिक रूप से संस्करण विनिर्देशों की अल्पविराम से अलग सूची के बाद। एक संस्करण विनिर्देशक <,>, < =,> =, == या! =, संस्करण संस्करण पहचानकर्ता के बाद ऑपरेटरों में से एक है।docutils >= 0.3 # comment lines and \ continuations are allowed in requirement strings BazSpam ==1.1, ==1.2, ==1.3, ==1.4, ==1.5, \ ==1.6, ==1.7 # and so are line-end comments
कि उनका विस्तार करने के लिए, अगर आप अपने पैकेज संस्करण 0.5 से संस्करण 0.3 की तुलना में अधिक से अधिक
docutils
लेकिन कम के एक संस्करण की आवश्यकता होती है करना चाहते हैं, जैसे कोड:
प्रलेखन इस तरह एक साधारण उदाहरण देता है यह काम करेगा:
docutils >= 0.3, <=0.5
दो अतिरिक्त नोट्स।
- प्रलेखन भी कहा गया है कि अनावश्यक/ओवरलैपिंग निर्भरता विनिर्देशों आंतरिक रूप से जोड़ा जाएगा, ताकि
docutils >= 0.3, >=0.2
docutils >= 0.3
में संयुक्त किया जाएगा। - इसके अलावा, विरोधाभासी संस्करण संख्याओं को निर्दिष्ट करने के बारे में सावधान रहें, जो "is meaningless and may therefore produce bizarre results." उदाहरण के लिए, मुझे नहीं पता कि आप क्यों करेंगे, लेकिन इसका उपयोग न करें:
docutils >= 0.3, <=0.2
क्योंकि यह असंभव है।
ग्रेट उत्तर, लेकिन मुझे क्या भ्रमित करता है कि अल्पविराम का अर्थ कभी-कभी ** या ** और कभी-कभी ** और ** होता है: सटीक संस्करण चश्मा की सूची स्पष्ट रूप से '1.1 या 1.2 या ...' कहती है और '> = 0.3 ,> = 0।2' से सिर्फ '> = 0.2' केवल उस तरह से समझ में आता है। लेकिन '> = 0.3, <= 0.5' या संस्करण चश्मे के विरोधाभास के बारे में आपके अनुच्छेद को ** और ** को इंगित करने के लिए अल्पविराम की आवश्यकता है। – zpea
@zpea के प्रश्न पर निर्माण करने के लिए: क्या संस्करणों की कई श्रेणियों को परिभाषित करने का कोई तरीका है? उदाहरण '(> = 1.0 और <2) OR (> = 2.7 और <2.9) OR (> = 4)' – stefanfoulis
दस्तावेज़ कहते हैं कि> 1,> 2 बनें> 1, लेकिन यह 2: बनने के लिए और अधिक समझ में आएगा, जैसा कि आपने कहा था। कोई जानता है क्यों? –
अनैच्छिक बीटा परीक्षणों से सावधान रहें। पैकेज रखरखाव कभी-कभी बिना किसी चेतावनी के सामान्य दर्शकों को असंगत, अधूरा, या टूटा हुआ ए, बी, और सी रिलीज़ जारी करते हैं। अगली बार जब आप setup.py को एक नए वर्चुअलएन्व में चलाते हैं, तो आप इन जहरीले अंडों में से एक को खींच सकते हैं, और अचानक आपका प्रोग्राम टूट जाएगा।
इस जोखिम को कम करने के लिए, foo >=0.3, <0.4
शैली घोषणा का उपयोग न करें, जिसमें पूरी तरह से संख्यात्मक ऊपरी सीमा है। <0.4
अभी भी संस्करण 0.4a0, 0.4a1, 0.4b0, 0.4c3 इत्यादि मानते हैं, इसके बजाय, foo >=0.3, <0.4a0
जैसे ऊपरी बाउंड का उपयोग करें, जैसे कि foo >=0.3, <0.4a0
, जब आप अपना install_requires लिखते हैं।
setuptools कुछ अप्रत्याशित करता है, verlib का उपयोग कर अपने संस्करण की तुलना मॉडल करने के लिए कोशिश कर रहा। Verlib एक बहुत अच्छा फिट है जब तक कि आपके संस्करण सामान्यीकृत और गैर विरोधाभासी हैं। यहां एक उदाहरण दिया गया है जो सामान्यीकृत संस्करणों के संभावित काउंटर-अंतर्ज्ञानी क्रम का प्रदर्शन करता है:
#!/usr/bin/env python
from verlib import NormalizedVersion as V
assert (V("0.7.9") < V("0.8a0") < V("0.8a1") < V("0.8b0") < V("0.8b1")
< V("0.8b2") < V("0.8.0") < V("0.8.1a0") < V("0.8.1") < V("0.9")
< V("1.0a3") < V("1.0b2") < V("1.0b20") < V("1.0c0") < V("1.0")
< V("1.0.1"))
assert (V("0.7.9") < V("0.8.0a0") < V("0.8.0a1") < V("0.8.0b0")
< V("0.8.0b1") < V("0.8.0b2") < V("0.8.0") < V("0.8.1a0") < V("0.8.1")
< V("0.9") < V("1.0a3") < V("1.0b2") < V("1.0b20") < V("1.0c0")
< V("1.0") < V("1.0.1"))
print "Version comparisons are sane."
आप अपनी setup.py फ़ाइल ('install_requires') में वर्लीब का उपयोग कैसे करते हैं? –
- 1. setuptools/वितरण
- 2. pypi उपयोगकर्ता चेतावनी: अज्ञात वितरण विकल्प: 'install_requires'
- 3. symlink (या स्क्रिप्ट चलाने) बनाने के लिए वितरण/setuptools का उपयोग करें?
- 4. easy_install/setuptools के संस्करण को निर्धारित करना
- 5. setuptools, वितरण, और पीपी कैसे एक दूसरे से संबंधित हैं?
- 6. nuspec में विशिष्ट निर्भरता संस्करण निर्दिष्ट करने के लिए कैसे?
- 7. मैं Dist :: Zilla dist.ini में अपने वितरण के लिए न्यूनतम perl संस्करण कैसे निर्दिष्ट करूं?
- 8. setuptools कैसे स्थापित करें?
- 9. setuptools
- 10. setuptools
- 11. हास्केल: स्रोत में संस्करण निर्दिष्ट करने के लिए सही अभ्यास?
- 12. जेएजीएस में कस्टम वितरण को परिभाषित करने के लिए कैसे?
- 13. maven-jaxb2-plugin में JAXB संस्करण को कैसे निर्दिष्ट करें?
- 14. नैन स्क्रिप्ट में MSBuild संस्करण को कैसे निर्दिष्ट करें?
- 15. setuptools
- 16. कैसे Gradle में अद्वितीय स्नैपशॉट संस्करण निर्दिष्ट करने के?
- 17. setuptools python को अनइंस्टॉल कैसे करें
- 18. स्क्रिप्ट में निर्दिष्ट करने के लिए केवल perl के विशिष्ट संस्करण का उपयोग करने के लिए कैसे करें?
- 19. निर्दिष्ट असतत वितरण से यादृच्छिक संख्या कैसे उत्पन्न करें?
- 20. .NET जेनेरिक बाधा में प्रकारों को निर्दिष्ट करने के लिए कैसे निर्दिष्ट करें?
- 21. संस्करण जानकारी को सॉर्ट करने के लिए कैसे करें
- 22. setuptools
- 23. ऑब्जेक्टिव-सी श्रेणियों को सही तरीके से दस्तावेज करने के लिए डॉक्सिजन को कॉन्फ़िगर कैसे करें
- 24. क्या श्रेणियों को स्थानांतरित करने के लिए कोई एल्गोरिदम है?
- 25. श्रेणियों के समतुल्यता का परीक्षण कैसे करें
- 26. मैवेन के वितरण प्रबंधन संगठन को विस्तृत कैसे करें?
- 27. विभिन्न जेनेरिकों को निर्दिष्ट करने के लिए
- 28. WEKA: एकाधिक विशेषता श्रेणियों को फ़िल्टर कैसे करें?
- 29. श्रेणियों में परिणाम गणना करने के लिए लुसेन का उपयोग
- 30. श्रेणियों के साथ टैगिंग का समर्थन करने के लिए डेटाबेस स्कीमा कैसे डिज़ाइन करें?
आपने क्या प्रयास किया है? [दस्तावेज़] (http://peak.telecommunity.com/DevCenter/setuptools#declaring- निर्भरता) यह सुझाव देते हैं कि सिंटैक्स आपके प्रश्न में आपके जैसा ही काम करेगा। – Blckknght