मुझे आश्चर्य है कि क्या मैं यह घोषणा कर सकता हूं कि एक मॉड्यूल का एक विशिष्ट संस्करण मौजूद होने पर एक पैकेज काम नहीं करेगा, लेकिन उस मॉड्यूल को खुद पर निर्भरता बनाए बिना।

उदाहरण के लिए, पैकेज प्रकाशक के रूप में, मुझे पता चलता है कि पाइथन में foo==1.2.3 की उपस्थिति कुछ कुंजी तोड़ रही है, भले ही मैं व्यक्तिगत रूप से इसका उपयोग न करूं।

क्या उस असंगति को घोषित करने का कोई तरीका है, इसलिए यदि इस मॉड्यूल का पता चला है तो मेरा पैकेज स्थापित करने में विफल हो जाएगा?

मुझे पता है कि मैं इसे आयात करने का प्रयास करके गतिशील रूप से रनटाइम पर इसका परीक्षण कर सकता हूं, लेकिन मुझे अधिक दिलचस्पी है अगर इसे पैकेज मेटाडेटा में घोषित किया जा सकता है, जैसे कि एक निर्भरता-विरोधी (या एक नकारात्मक निर्भरता)

1
sorin 14 सितंबर 2019, 22:20

1 उत्तर

सबसे बढ़िया उत्तर

जाहिरा तौर पर ऐसा करने का कोई घोषणात्मक तरीका नहीं है और इसे setup.py में करने की अनुशंसा नहीं की जाती है क्योंकि यह इंस्टॉल पर चलने की गारंटी नहीं है।

साथ ही, यदि संभव हो तो भी, यह उपयोगकर्ता को बाद में असंगत पैकेज को स्थापित करने से नहीं रोकेगा।

इसका मतलब है कि ऐसा करने का एकमात्र विश्वसनीय तरीका रनटाइम चेक जोड़ना है। क्ली टूल्स के लिए यह आसान होना चाहिए, पुस्तकालयों के लिए या यह मुश्किल हो सकता है क्योंकि यह आयात पर एक छोटा प्रदर्शन प्रभाव डाल सकता है।

1
sorin 15 सितंबर 2019, 07:16