2009-01-29 29 views
10

मैं एक पैकेज इसलिए की तरह सेट हो जाने पर पीछा में समस्या:पायथन: स्थानीय मॉड्यूल वैश्विक मॉड्यूल

packagename/ 
    __init__.py 
    numbers.py 
    tools.py 
    ...other stuff 

अब tools.py अंदर, मैं मानक पुस्तकालय मॉड्यूल fractions आयात करने के लिए कोशिश कर रहा हूँ। हालांकि, fractions मॉड्यूल स्वयं numbers मॉड्यूल आयात करता है, जो मानक पुस्तकालय में से एक माना जाता है।

समस्या यह है कि यह मेरी बजाय पैकेज से numbers मॉड्यूल आयात करने के लिए (यानी मेरी numbers.py stdlib numbers मॉड्यूल पीछा किया जाता है) की कोशिश करता है, और फिर बजाय stdlib मॉड्यूल आयात करने की, इसके बारे में शिकायत।

मेरा सवाल है, क्या कोई कामकाज है ताकि मैं अपने पैकेज की वर्तमान संरचना रख सकूं, या अपने स्वयं के अपमानजनक मॉड्यूल (numbers.py) का नाम बदलने का एकमात्र समाधान है?

+0

क्षमा करें, अधिक अच्छी तरह से TFQ को पढ़े चाहिए। वैसे भी, मैं अब समस्या को पुन: पेश करने की कोशिश कर रहा हूं, लेकिन मैं नहीं कर सकता। त्रुटि होने पर आप कोड को कैसे निष्पादित कर रहे हैं? जब मैं पैकेज के अंदर से कोड चला रहा हूं तो मैं इसे केवल पुन: उत्पन्न कर सकता हूं। –

उत्तर

8

absolute and relative imports का उपयोग python2.5 (__future__ आयात के साथ) के बाद किया जा सकता है और ऐसा लगता है कि आप क्या देख रहे हैं।

4

मैं मानक पुस्तकालय को छायांकन से बचने की कोशिश करता हूं। अपने मॉड्यूल को "_numbers.py" में बदलने के बारे में कैसे?

और निश्चित रूप से, आप अब भी कर सकता है:

import _numbers as numbers 
संबंधित मुद्दे