प्रयत्न
if __name__ == '__main__':
from [whatever the name of your package is] import one
else:
import one
ध्यान दें कि पायथन 3 में, elseखंड में भाग के लिए वाक्यविन्यास होगा
from .. import one
दूसरे विचार पर, यह संभवतः आपकी विशिष्ट समस्या को ठीक नहीं करेगा। मैंने इस प्रश्न को गलत समझा और सोचा कि टू-डीएम मुख्य मॉड्यूल के रूप में चलाया जा रहा है, लेकिन ऐसा नहीं है। और अजगर 2.6 (आयात किए बिना रास्ते में मतभेद पर विचार absolute_importसे __future__और अजगर 3.x संभाल आयात), तुम वैसे भी अजगर 2.6 के लिए ऐसा करने की जरूरत नहीं होगी, मुझे नहीं लगता कि।
फिर भी, यदि आप अंततः पायथन 3 पर जाते हैं और पैकेज मॉड्यूल के रूप में और पैकेज के अंदर एक स्टैंडअलोन स्क्रिप्ट के रूप में एक मॉड्यूल का उपयोग करने की योजना बनाते हैं, तो कुछ ऐसा रखना एक अच्छा विचार हो सकता है।
if __name__ == '__main__':
from [whatever the name of your package is] import one # assuming the package is in the current working directory or a subdirectory of PYTHONPATH
else:
from .. import one
दिमाग में।
संपादित करें: और अब आपकी वास्तविक समस्या के संभावित समाधान के लिए। या तो अपने oneमॉड्यूल युक्त निर्देशिका से पाइलिंट चलाएं (कमांड लाइन के माध्यम से, शायद), या निम्नलिखित कोड कहीं भी डाल दें जब एलएलएल चला रहे हों:
import os
olddir = os.getcwd()
os.chdir([path_of_directory_containing_module_one])
import one
os.chdir(olddir)
मूल रूप से, PYTHONPATH के साथ फ़िडलिंग के विकल्प के रूप में, बस यह सुनिश्चित करें कि one.pyजब आप आयात करते हैं तो वर्तमान कार्यशील निर्देशिका वह निर्देशिका होती है ।
(ब्रायन के उत्तर को देखते हुए, आप शायद पिछले कोड को असाइन कर सकते हैं init_hook, लेकिन यदि आप ऐसा करने जा रहे हैं, तो आप बस उसी के लिए आवेदन कर सकते हैं sys.path, जो मेरे समाधान से थोड़ा अधिक सुरुचिपूर्ण है।)