2012-04-22 15 views
24

यहाँ निर्देशिका संरचना है?मैं एक भाई निर्देशिका से पाइथन लिपि कैसे आयात करूं?</p> <pre><code>parent_dir/ foo_dir/ foo.py bar_dir/ bar.py </code></pre> <p>मैं bar.py foo.py में कैसे आयात करूं:

+0

देखें: https://stackoverflow.com/questions/6323860/sibling-package-imports/27878845#27878845 –

उत्तर

25

सब होने वाली निर्देशिका अजगर संकुल कर रहे हैं, यानी वे सब __init__.py होते हैं, तो आप उपयोग कर सकते हैं

from ..bar_dir import bar 

निर्देशिका अजगर पैकेज नहीं हैं, तो आप sys.path साथ चारों ओर खिलवाड़ करके ऐसा कर सकते, लेकिन आपको नहीं करना चाहिए।

+0

इस करता है, तो आप एक गैर पैकेज में आयात करना चाहते हैं काम नहीं करेगा और आप बस एक भाई से एक अजगर चलाते हैं। इस मामले में sys.path.append – mhstnsc

+1

@mhstnsc जाने का तरीका है, मैं इस मामले में कुछ गलत कर चुका हूं, लेकिन अगर यह कुछ हैकी स्क्रिप्ट है तो यह 'sys.path' के साथ गड़बड़ करना ठीक हो सकता है। –

+0

यह गलत नहीं है लेकिन मुख्य मॉड्यूल चलाते समय आप सापेक्ष आयात नहीं कर सकते हैं। https://www.python.org/dev/peps/pep-0366/ – mhstnsc

12

आप सामान्यीकृत आयात के लिए sys और os मॉड्यूल का उपयोग कर सकते हैं। लाइनों के साथ foo.py शुरुआत में

import sys 
import os 
sys.path.append(os.path.abspath('../bar_dir')) 
import bar 

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

  • कोई संबंधित समस्या नहीं^_^