क्या मुझे पाइथन पैकेज में एकमात्र मॉड्यूल को दिया गया नाम पैकेज के नाम से मेल खाना चाहिए?क्या एकल-मॉड्यूल पायथन पैकेज नामकरण के नियम हैं?
उदाहरण के लिए अगर मैं संरचना के साथ एक एकल मॉड्यूल के साथ एक पैकेज है
super-duper/
super/
__init.py___
mycode.py
...
मैं PyPi पर एक पैकेज super-duper
बना सकते हैं, जो जब स्थापित, site-packages
में दो फ़ोल्डर नाम के साथ नहीं है कि होगा मैच:
super/
super_duper-1.2.3.dist-info/
कि मेरी परियोजना आयात करने के लिए मैं उपयोग
import super
जिसका अर्थ है
बजाय वास्तविक पैकेज नाम से (super_duper
)
यह आम बात (जल्दी हर दूसरे पैकेज मैं site-packages
में देखते हैं के लिए फ़ोल्डर्स से पहचानने) जिसके लिए पैटर्न
same_name/
same_name-1.2.3.dist-info/
पालन के खिलाफ हो रहा है पीईपीआई पैकेज same-name
।
मैं बजाय (हमेशा) अपनी परियोजनाओं की संरचना करना चाहिए ताकि
super-duper/
super_duper/
__init.py___
mycode.py
...
सुनिश्चित करने के लिए उस पैकेज नाम और मॉड्यूल आयात नाम "मैच":
import super_duper
वहाँ एक प्रासंगिक सबसे अच्छा अभ्यास है या नियम मुझे निम्नलिखित का पालन करना चाहिए?
पीईपी 423 जाने के रास्ते की तरह लगता है। मैं उदाहरण में अवधि ('.') के उपयोग के बारे में उलझन में हूं। क्या मैं 'super.dder' के साथ हर जगह' super_duper' को प्रतिस्थापित कर सकता हूं? – orome
पीईपी 423 स्थगित कर दिया गया क्योंकि पीईपी 426 का मसौदा तैयार किया जा रहा था। हालांकि पीईपी 426 प्रभावी रूप से त्याग दिया गया है, लेकिन मुझे डर है कि यह 423 पर लागू होता है। [कुछ परिवर्तन लंबित हैं] (https://mail.python.org/pipermail/python-dev/2013-July/127207.html) उदाहरण के लिए, कभी लागू नहीं किया गया है। –
@raxacoricofallapatorius उदाहरण में अवधि वास्तव में नामस्थान है - पीईपी 423 यह भी बताती है कि यदि एक पैकेज एक इकाई के स्वामित्व में है, तो पैकेज के नाम का पहला भाग मालिक का नाम होना चाहिए। यह विवादों से बचने में मदद करता है, ताकि यदि आप "पिरामिड" नामक पैकेज बनाते हैं, और मैं "पिरामिड" नामक एक पूरी तरह से अलग पैकेज बना देता हूं, तो तीसरा उपयोगकर्ता दोनों को स्थापित कर सकता है और उन्हें अलग कर सकता है। – mwobey