2011-09-14 6 views
11

मैं डिस्क पर निम्नलिखित संरचना के साथ एक पैकेज के विकास कर रहा हूँ:मैं मानक लाइब्रेरी पैकेज नामों के साथ अपने पायथन पैकेज में नेमस्पेस विवादों को कैसे हल करूं?

foo/ 
    __init__.py 
    xml.py 
    bar.py 
    moo.py 

xml.py पैकेज एक वर्ग है कि कुछ कस्टम XML पार्सिंग और एक SAX धारा पार्सर का उपयोग अन्य पैकेज घटकों के लिए अनुवाद करता है प्रदान करता है। तो यह उस में है:

import xml.sax 
import xml.sax.handler 

लेकिन मैं मिलता है जब मैं एक आवेदन पत्र में उपयोग करने के लिए जाना:

Traceback (most recent call last): 
    File "testxmlparser.py", line 15, in <module> 
    import foo.xml 
    File "~/code/foo/xml.py", line 39, in <module> 
    import xml.sax 
ImportError: No module named sax 

मैं एक namespace संघर्ष दिखाई देते हैं। अगर मैं xml.py का नाम बदलता हूं तो xmlparser.py जैसे कुछ और उम्मीद के अनुसार काम करता है। लेकिन यह गलत काम करने की तरह लगता है। मुझे लगता है कि मुझे यहां पाइथन में पैकेज नामों और संकल्प के बारे में कुछ मौलिक याद आ रही है।

क्या इस काम को करने का कोई उचित तरीका है जिसमें मुझे foo/xml.py फ़ाइल का नाम बदलने में शामिल नहीं है? या यह वास्तव में विरोधाभासी नामों का एकमात्र समाधान है?

संपादित करें: "मानक पायथन मॉड्यूल के समान चीजों को नाम देने से बचें" लगता है ... अच्छा .. मेरे लिए माइनेफ्ट। यह एक चलती लक्ष्य है, मानक मॉड्यूल सेट, जो समय के साथ बदलना और बढ़ना है। तो जब तक आपको वास्तव में आपके नामों के साथ क्रिएटिव-चीजें-तक-आप-खोज-कुछ-नहीं-विरोधी-संघर्ष समाधान मेरे लिए खराब नहीं लगता है। इसके अलावा, मुझे इसे पहले से ही foo के साथ एक अद्वितीय पैकेज नाम में मिला है (मैं foo का उपयोग नहीं कर रहा हूं, लेकिन कुछ निश्चित रूप से अद्वितीय है), क्या यह पर्याप्त नहीं होना चाहिए?

उत्तर

13

रूप over here उल्लेख किया है, का उपयोग

from __future__ import absolute_import 

और relative imports का उपयोग अगर जरूरत।

+0

समस्या है * xml.sax' * मेरे * पैकेज में नहीं है। तो इसका एक सापेक्ष आयात काम नहीं करता है। यही कारण है कि यह अभी मेरे लिए असफल रहा है। पायथन को 'xml.sax' को मेरे 'foo.xml' पैकेज के सापेक्ष होने की उम्मीद है, लेकिन ऐसा नहीं है। –

+0

वही था जो मैं बाद में था। धन्यवाद! –

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