में पाइप का पता लगाएं: setup.py में पता लगाने का सबसे अच्छा तरीका क्या है कि हमें pip install package
द्वारा ट्रिगर किया जा रहा है?setup.py
पृष्ठभूमि: मेरे पास एक पैकेज है (सी-लाइब्रेरी के लिए बाइंडिंग), जिसके लिए मैं अंडे प्रदान करता हूं जिसमें लाइब्रेरी स्वयं शामिल है। मेरे रीडेमे/डॉक्स में मुझे लगता है कि यह पैकेज कुछ प्लेटफॉर्म पर 'easy_install-able' है। स्रोत से निर्माण करते समय (उदाहरण के लिए पीआईपी के साथ), पुस्तकालय स्वयं एक निर्माण निर्भरता है। समस्या यह है कि मैंने कुछ हद तक नियमित रूप से उन उपयोगकर्ताओं को भ्रमित कर दिया है जो गलती से मानते हैं कि पीआईपी आसान-स्थापना के लिए एक पूर्ण प्रतिस्थापन है, और लाइब्रेरी के बिना सिस्टम पर काम करने के लिए pip install package
की अपेक्षा करता है, या यहां तक कि एक कंपाइलर के बिना, जहां अंडे वह वास्तव में चाहते हैं।
मैं यह जानना चाहता हूं कि निर्माण पाइप द्वारा ट्रिगर किया गया है, इसलिए यदि मैं पुस्तकालय की कमी के कारण विफल रहता हूं तो मैं एक दोस्ताना "पाइप! = Easy_install" संदेश प्रदान कर सकता हूं। इसे सही होने की आवश्यकता नहीं है, बस pip install package
के सबसे आम मामलों को पकड़ें। निरीक्षण पर, यह यह करने के लिए एक विशेष रूप से मजबूत तरीका है की तरह प्रतीत नहीं होता है, और सबसे अच्छा मैं के साथ आए हैं है:
probably_using_pip = '--single-version-externally-managed' in sys.argv
वहाँ का पता लगाने के लिए एक बेहतर (या बेहतर अभी तक, सरकारी) रास्ता नहीं है setup.py से पीआईपी?
लाइब्रेरी मौजूद नहीं होने पर त्रुटि संदेश "setup.py इंस्टॉल" चलाने के दौरान अलग होने की आवश्यकता क्यों है? – joeforker
जब आप 'setup.py install' चलाते हैं, तो आप निश्चित रूप से स्रोत से निर्माण कर रहे हैं। जब आप 'पीआईपी इंस्टॉल' चलाते हैं तो लोग द्विआधारी उम्मीद कर सकते हैं लेकिन उन्हें नहीं प्राप्त कर रहे हैं (उपयोगकर्ता वास्तव में पीआईपी और easy_install के बीच अंतर को समझ नहीं पाते हैं)। यह प्रश्न अब मेरे विशेष मामले से प्रासंगिक नहीं है, क्योंकि पीपी 1.5 डिफ़ॉल्ट रूप से पहियों का समर्थन करता है। – minrk
कुछ और संदर्भ: पूछने के समय (दो साल पहले), मेरा पैकेज अक्सर उन मशीनों पर स्थापित किया गया था जिनमें कोई कंपाइलर नहीं था, और पीआईपी ने कोई बाइनरी प्रारूप समर्थित नहीं किया था। easy_install बस ठीक काम किया, लेकिन पाइप संकलन करने में विफल हो जाएगा। इस वजह से, मैं उन लोगों को सूचित करना चाहता था जिनके 'पाइप इंस्टॉल' विफल रहे हैं कि easy_install बेहतर हो सकता है। – minrk