जब से तुम उल्लेख कि यह पायथन 3 है, आपको अपनी .py
फ़ाइलों में निम्नलिखित जोड़ना नहीं है। मैं करूंगा अभी भी है क्योंकि यह पीछे की ओर पोर्टेबिलिटी में मदद करता है, तो कुछ गरीब घास जो अजगर 2 पर अटक गया है अपने कोड का उपयोग करने की जरूरत है: यह देखते हुए कि आप अजगर 3 का उपयोग कर रहे हैं, या आप अजगर 2 का उपयोग कर रहे है कि और भी शामिल है
from __future__ import absolute_import
से main.py
:
import pkg1.util as util
test.py
से आप दो तरीकों में से एक पर है कि क्या आप pkg1
और pkg2
पर विचार किया जाएगा आधार का प्रयोग करेंगे ऊपर लाइन, यहाँ अपने जवाब है चीजें जो हमेशा एक-दूसरे के संबंध में एक साथ तैनात होती हैं, या फिर वे हमेशा शीर्ष स्तर पर अर्ध-स्वतंत्र रूप से प्रत्येक तैनात किए जाएंगे। तो पहले आप इस करना होगा:
from ..pkg1 import util
और अगर यह दूसरा विकल्प है, इस:
import pkg1.util as util
यह निश्चित रूप से, तात्पर्य है कि आप हमेशा निर्देशिका से अजगर चल रहे हैं जो main.py
में है, या वह निर्देशिका PYTHONPATH
में है या किसी कारण से sys.path
में समाप्त होती है (उदाहरण के लिए मुख्य पायथन साइट-पैकेज निर्देशिका होने की तरह)।
यदि 'पीईपीएटीएच' में किसी कारण से अलग 'pkg1' मौजूद है, तो क्या मुझे अभी भी इन विकल्पों के साथ आयात किया गया * यह * pkg1' मिलेगा? –
@aharon: कोई विकल्प नहीं है जो आपको वादा करता है कि आपको 'sys.path' के साथ गड़बड़ किए बिना इच्छित' pkg1' प्राप्त होगा, यह सुनिश्चित करने के लिए कि उचित निर्देशिका पथ में पहली बार है। इस तरह से विवादित पैकेज नाम होने के कारण एक बहुत बुरा विचार है जब तक कि आपके पास 'setuptools' जैसे पैकेज प्रबंधन सिस्टम नहीं है जो पैकेज को' नेमस्पेस पैकेज 'के रूप में प्रबंधित कर रहा है। – Omnifarious
क्या सभी को एक ही निर्देशिका में '__init__py' की आवश्यकता नहीं होगी' main.py'? जैसा कि है, 'test.py' और' util.py' पूरी तरह से अलग संकुल में हैं जो एक सामान्य सुपरपैकेज का उप-पैकेज नहीं है। –