आवश्यकताएँ। अजगर संस्करण पर निर्भर करता है


89

मैं python3 के लिए एक python2 पैकेज पोर्ट करने की कोशिश कर रहा हूं (मेरी खुद की नहीं) छह का उपयोग करके ताकि यह दोनों के साथ संगत हो। हालाँकि, आवश्यकताओं में सूचीबद्ध पैकेजों में से एक। अब python3 stdlib में शामिल किया गया है और pypi संस्करण python3 में काम नहीं करता है, इसलिए मैं इसे सशर्त रूप से बाहर करना चाहता हूं। Setup.py में ऐसा करना आसान है, मैं कुछ ऐसा कर सकता हूं:

if sys.version_info[0] == 2:
    requirements += py2_requirements
else:
    requirements += py3_requirements

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


1
कृपया stackoverflow.com/a/33451105/99834 पर स्वीकृत प्रतिक्रिया बदलें - जो निस्संदेह इसे लागू करने का सही तरीका है।
सोरिन

जवाबों:


133

आप उपयोग कर सकते हैं वातावरण मार्करों में इस लक्ष्य को हासिल करने के लिए requirements.txtके बाद से pip 6.0:

SomeProject==5.4; python_version < '2.7'
SomeProject; sys_platform == 'win32'

यह अतिरिक्त आवश्यकताओं की घोषणा करके भी सेटटॉप्स द्वारा समर्थित है setup.py:

setup(
    ...
    install_requires=[
        'six',
        'humanize',
    ],
    extras_require={
        ':python_version == "2.7"': [
            'ipaddress',
        ],
    },
)

आवश्यकता विवरण भी देखें । और स्ट्रिंग्स इसी अजगर आदेशों की स्ट्रिंग संस्करणों के लिए।


अच्छा! मैं इसके साथ कैसे कर सकता हूं sys.platform == "win32"? मैंने प्रयोग करने की कोशिश की :sys.platform == "win32", लेकिन मुझे setup()फंक्शन से एक "अमान्य वातावरण मार्कर" त्रुटि मिली
एंड्रे कारन

3
अपडेट: PEP 496 - PEP 508 द्वारा पर्यावरण मार्करों को हटा दिया गया है - पायथन सॉफ्टवेयर पैकेजों के लिए निर्भरता विनिर्देश , जो पूरी तरह से पर्यावरण मार्करों के लिए सिंटैक्स सहित निर्भरता घोषणा सिंटैक्स को निर्दिष्ट करता है ।
jkdev

10

आप एक से अधिक आवश्यकताओं की फाइल बना सकते हैं, उन कॉमन पैकेजों को एक कॉमन फाइल में डाल सकते हैं, और उन्हें एक अन्य पाइप रिक्वायरमेंट फाइल में शामिल कर सकते हैं -r file_path

requirements/
  base.txt
  python2.txt
  python3.txt

python2.txt:

-r base.txt
Django==1.4 #python2 only packages

python3.txt:

-r base.txt
Django==1.5 #python3 only packages

पाइप स्थापित -r आवश्यकताएँ / python2.txt

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