2013-01-21 12 views
7

अन्य अजगर मॉड्यूल पढ़ने में, मैंने देखा है कि कई लोग अक्सर अपने स्रोत फ़ाइलों में __version__ और __author__ वैश्विक चर (इसके भी PEP3001 में उल्लेख किया है) शामिल हैं। मैं इन चर के उचित सेट के साथ अपना कोड दस्तावेज करना चाहता हूं। वैश्विक चर की एक सूची क्या है जिसे आम तौर पर शामिल किया जा सकता है?एक पायथन मॉड्यूल के लिए, घोषित करने के लिए मानक वैश्विक चर क्या हैं?

+2

व्यक्तिगत रूप से, मैं बस कारण के लिए है कि सामान में से किसी के साथ अपने मॉड्यूल को अव्यवस्थित से बचने कि '' __....__ नाम संबंधित * अजगर * और मुझे नहीं लगता कि जब तक यह है उपयोगकर्ता कि सामान में से किसी के ऊपर लिख चाहिए एक कारण डॉक्स में वर्णित के लिए (जैसे 'कक्षाएं आरंभ करने के लिए __init__') ... कुछ बिंदु पर यह मानकीकृत हो जाता है (एक पीईपी या डॉक्स में), मैं अपनी राय हालांकि – mgilson

+1

आप PEP3001 का कहना है, लेकिन नोटिस बदल सकता है कि पीईपी ("पायथन एन्हांसमेंट _Proposal_") "निकाला गया" था। इसलिए, पीईपी की भाषा को "मानक" के रूप में नहीं माना जाना चाहिए। हो सकता है कि आपने स्टेटस फ्लैग को अभी याद किया हो, लेकिन बस मामले में, मैं [PEP 1] (http://www.python.org/dev/peps/pep-0001/) के लिंक को शामिल करूंगा, जो बताता है कि कैसे पीईपी प्रक्रिया काम करता है। –

+0

@mgilson - यह एक उचित टिप्पणी है। मुझे "स्वयं-दस्तावेज" कोड रखने का विचार पसंद है, भले ही यह केवल मुश्किल-मानकीकृत वैश्विक चर है। लेकिन, साथ ही, मैं देखता हूं कि आप कहां से आ रहे हैं क्योंकि __...__ 'पाइथन से संबंधित है। –

उत्तर

2

वहाँ उन वैश्विक चर के लिए एक विशिष्ट मानक नहीं है - के रूप में पीईपी आप लिंक में बताया गया है, वे एक मानक प्राप्त करने के लिए, लेकिन किसी भी विलक्षण रूप में सार्वभौमिक रूप से स्वीकार नहीं किया हो गए हैं प्रयास किया गया था।

वास्तविक मानक पीईपीआई मेटाडाटा है, जो distutils (या एक संगत इंटरफ़ेस) का उपयोग करके आपके मॉड्यूल के लिए setup.py फ़ाइल में निर्दिष्ट है। अपनी परियोजना के बारे में मेटाडेटा प्रदान करने के लिए बजाय

from distutils.core import setup 

setup(
    name='TowelStuff', 
    version='0.1.0', 
    author='J. Random Hacker', 
    author_email='[email protected]', 
    packages=['towelstuff', 'towelstuff.test'], 
    scripts=['bin/stowe-towels.py','bin/wash-towels.py'], 
    url='http://pypi.python.org/pypi/TowelStuff/', 
    license='LICENSE.txt', 
    description='Useful towel-related stuff.', 
    long_description=open('README.txt').read(), 
    install_requires=[ 
     "Django >= 1.1.1", 
     "caldav == 0.1.4", 
    ], 
) 

http://guide.python-distribute.org/creation.html

+1

ध्यान दें कि (IIUC) distutils रास्ते पर है। उदाहरण के लिए, 'setup.cfg' में स्थिर मेटाडेटा द्वारा 'सेटअप (...)' को प्रतिस्थापित किया जाना है। मुझे बिल्कुल पता नहीं है कि वास्तविकता बनने के लिए यह कितना करीब है। – delnan

1

उपयोग distutils (या सुपरसेट setuptools): यहाँ पैकेजिंग ट्यूटोरियल से उदाहरण दिया गया है।

विशेष रूप से setuptools का उपयोग करते समय, मेटाडेटा तब pkg_resources module के माध्यम से खोजने योग्य और पुन: प्रयोज्य है।

वैश्विक चर के लिए कोई मानक नहीं है जैसे कि __version__, पायथन स्टडलिब के लिए भी नहीं, यही कारण है कि पाइथन 3 के लिए stdlib में यह मेटाडेटा प्रदान करने का प्रयास कुछ भी नहीं है।

मैं कैसे अपनी परियोजना को ठीक से पैकेज पर एक प्राइमर के रूप में Python Packaging User Guide सिफारिश कर सकते हैं।

+0

* पायथन 3 के लिए stdlib में इस मेटाडेटा को प्रदान करने का प्रयास कुछ भी नहीं है * - क्या आप कृपया कुछ संदर्भ प्रदान कर सकते हैं? इसके अलावा, आप को समझाने के लिए क्यों कुछ stdlib संकुल मेटाडाटा सक्षम हो सकता है और दूसरों को नहीं है - https://github.com/pypa/pip/issues/1570 देख –

+0

https://mail.python.org/pipermail/python देखें -dev/2012-जून/120430.html; 'distutils2' ने कभी भी पर्याप्त कर्षण प्राप्त नहीं किया और इसके साथ नए मेटाडेटा स्वरूप और प्रयास भी प्राप्त किए। * कुछ * stdlib पुस्तकालयों में मेटाडेटा के लिए: मुझे लगता है कि वे पहली स्वतंत्र परियोजनाएं थीं जिन्हें बाद में stdlib में विलय कर दिया गया है। –

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