मेरे पास /project
पर स्थित tester.py
नामक एक फ़ाइल है।एक उपनिर्देशिका से एक फ़ाइल आयात करें?
/project/tester.py
/project/lib/BoxTime.py
मैं tester
से BoxTime
आयात करना चाहते हैं:
/project
उप-निर्देशिका lib
कहा जाता है, BoxTime.py
नामक एक फ़ाइल के साथ है। मैं इस की कोशिश की है:
import lib.BoxTime
कौन सा हुई:
Traceback (most recent call last):
File "./tester.py", line 3, in <module>
import lib.BoxTime
ImportError: No module named lib.BoxTime
कोई भी विचार कैसे उपनिर्देशिका से BoxTime
आयात करने के लिए?
संपादित
__init__.py
समस्या थी, लेकिन मत भूलना lib.BoxTime
, या प्रयोग के रूप में BoxTime
का उल्लेख करने के:
import lib.BoxTime as BT
...
BT.bt_function()
क्यों यह महसूस करता है * hacky *? यह तरीका है कि पाइथन सुरक्षित/उपलब्ध आयात निर्देशिकाओं को चिह्नित करता है। – IAbstract
इतना ही नहीं यह सुरक्षित/उपलब्ध आयात निर्देशिका के निशान, लेकिन यह भी जब एक निर्देशिका नाम का आयात कुछ प्रवर्तन कोड को चलाने के लिए एक तरह से प्रदान करता है। – Sadjad
हाँ इस hacky और भी गंदा है, और मेरी राय में भाषा फाइल सिस्टम भर में लोड हो रहा है फ़ाइलों की अपनी तरह से लागू नहीं करना चाहिए। PHP में हम userland कोड रजिस्टर कई autoloading कार्यों है कि जब एक नाम स्थान/वर्ग याद आ रही है कहा जाता है की अनुमति से समस्या हल हो। फिर समुदाय ने पीएसआर -4 मानक और संगीतकार का उत्पादन किया है, और आजकल किसी को इसके बारे में चिंता करने की ज़रूरत नहीं है। और कोई बेवकूफ हार्डकोडेड '__init__' फ़ाइलें (लेकिन यदि आप इसे, बस एक autoloading हुक रजिस्टर करना चाहते हैं! यह _hacky_ और _hackable_ के बीच का अंतर है)। –