2013-07-18 9 views
14

"Setupscript (http://docs.python.org/2/distutils/setupscript.html) लेखन के लिए अजगर डॉक कहा गया है कि निर्भरता अनुभागकैसे निर्भरता निर्दिष्ट करने के लिए

> 2.4. Relationships between Distributions and Packages

[...] These relationships can be specified using keyword arguments to the distutils.core.setup() function.

Dependencies on other Python modules and packages can be specified by supplying the requires keyword argument to setup(). The value must be a list of strings. Each string specifies a package that is required, and optionally what versions are sufficient.

To specify that any version of a module or package is required, the string should consist entirely of the module or package name. Examples include 'mymodule' and 'xml.parsers.expat'.

[...]

के तहत निर्दिष्ट किया जा सकता इस बल्कि विरल जानकारी के बिना यह देखते हुए एक उदाहरण मैं सिर्फ यकीन है कि मैं इसे सही करने के बनाना चाहते हैं। इसके अलावा, मैं नहीं एपीआई विवरण में इस requires पैरामीटर पा सकते हैं http://docs.python.org/2/distutils/apiref.html#distutils.core.setup

तो यह इस तरह किया जाता है, जैसे,

setup(name='MyStuff', 
     version='1.0', 
     requires='os, sys, progressbar', 
     [...] 

मुझे आशा है कि कोई मुझे थोड़ा और अंतर्दृष्टि दे सकता है! धन्यवाद!

संपादित करें:

distutils.core से निपटने के लिए विवाद setuptools, बस कर सकता है

try: 
    from setuptools import setup 
except ImportError: 
    from distutils.core import setup 

यह मतलब है?

+1

पूरे पायथन पैकेजिंग सिस्टम को बुरी तरह से दस्तावेज किया गया है, मुख्य रूप से क्योंकि आंशिक रूप से बहुत अच्छी, लेकिन विरोधाभासी जानकारी वाले कई अलग-अलग स्थान हैं। मैं हमेशा मौजूदा परियोजनाओं को देखता हूं। यदि आपके पास विशेष जरूरत नहीं है, तो आपको केवल परेशानियों की आवश्यकता है। उदाहरण के लिए बाधाएं 'setup.py' फ़ाइल के लिए एक अच्छा उदाहरण है जो केवल distutils का उपयोग करती है: https://github.com/kwgoodman/bottleneck/blob/master/setup.py –

+0

@ जन-फिलिप गेहर्के: फिर भी' बाधा ' यह निर्दिष्ट करने में विफल रहता है कि इसे मेटाडेटा में 'numpy' की आवश्यकता है। 'setuptools' में इन दिनों बहुत बेहतर प्रलेखन है, 'वितरित' कांटा वापस विलय होने के कारण धन्यवाद: http://pythonhosted.org/setuptools/ –

+0

ठीक है आप यह भी तुरंत numpy आयात करने के साथ शुरू होता है। –

उत्तर

19

distutils अनदेखा करें। यदि आप एक पैकेज बनाना चाहते हैं जो pip जैसे उपकरण के लिए निर्भरता निर्दिष्ट करता है और बाहर निकलने के लिए, आपको के बजाय का आधार बनाना होगा।

setuptools निर्भरता install_requires में सूचीबद्ध हैं, जो एक सूची लेता है:

setup(name='MyStuff', 
     version='1.0', 
     install_requires=['progressbar'], 
     # ... 
) 

जो अपने स्वयं के वितरण होना चाहिए। os और sys पाइथन और के साथ शामिल मॉड्यूल हैं सूचीबद्ध नहीं होना चाहिए।

+4

मैंने हाल ही में इस बारे में एक लंबी चर्चा की थी और इस बात से आश्वस्त हो गया कि वर्तमान स्थिति में एक अच्छा मुहावरे प्रयास है: setuptools आयात सेटअप से; ImportError को छोड़कर: distutils.core आयात सेटअप से। –

+0

@ Jan-PhilipGehrcke बस एक FYI कि 'distutils.core' से 'setup'' install_requires' का समर्थन नहीं करता है। तो यदि आप इसका उपयोग करने का प्रयास करते हैं, तो आपको इस तरह का एक संदेश दिखाई देगा: */usr/lib/python3.4/distutils/dist.py: 260: उपयोगकर्ता चेतावनी: अज्ञात वितरण विकल्प: 'install_requires' *। तो इस और अन्य मतभेदों के प्रकाश में, मुझे नहीं लगता कि यह किसी भी चीज के तहत सबसे सरल मुहावरे है लेकिन सबसे सरल परिस्थितियों में है। – Six

संबंधित मुद्दे