2016-10-28 5 views
6

पिचर्म 2016.2.3, मैक ओएस एक्स 10.11.1, पायथन 3.5 (होमब्रू) से नहीं;आयात कथन PyCharm पर काम करता है लेकिन टर्मिनल

मैं इस फ़ोल्डर संरचना

project 
    /somepackage 
    /subpackage 
    __init__.py 
    bar.py 
    __init__.py 
    foo.py 

foo.py: 
import somepackage.subpackage.bar 
print("foo") 

bar.py: 
print("bar") 

है तो मेरी उम्मीद उत्पादन

bar 
foo 

यह ठीक काम करता है जब PyCharm से चलाया जाता है।

$ pwd 
$ /home/project (not the actual path; just omitting some personal stuff) 
$ python3.5 somepackage/foo.py 
File "foo.py", line 1, in <module> 
import somepackage.subpackage.bar 
ImportError: No module named 'somepackage' 

मैं this question पाया है, एक ही समस्या के बारे में है जो: हालांकि, जब मैं अपने टर्मिनल से इसे चलाने मैं एक ImportError मिलता है। हालांकि, सुझाए गए समाधानों में से कोई भी मेरे लिए काम नहीं करता है, क्योंकि मैं वास्तव में एक ही पायथन दुभाषिया का उपयोग कर रहा हूं क्योंकि PyCharm करता है और मैं वर्तमान में उस फ़ोल्डर में हूं जिसमें somepackage/ फ़ोल्डर है।

क्या किसी के पास इस समस्या को हल करने के बारे में कोई अन्य सुझाव है? बहुत धन्यवाद!

+1

क्या आपके पास कुछ पैकेज में '__init __। Py' फ़ाइल है? यह पाइथन को इंगित करता है कि यह पैकेज – Mitta

+0

है हां यह करता है। मैं अपना प्रश्न संपादित करूंगा, धन्यवाद! – Pibborn

उत्तर

8

आप एक स्क्रिप्ट की तरह foo.py चला रहे हैं, लेकिन आप वास्तव में इसे मॉड्यूल की तरह उपयोग कर रहे हैं। तो उचित समाधान एक मॉड्यूल के रूप इसे चलाने के लिए है:

python3 -m somepackage.foo 

रिकॉर्ड के लिए, एक और विकल्प की तरह अपना रास्ता संपादित करने के लिए है:

export PYTHONPATH=. 

(या आप वहाँ में पूर्ण निर्देशिका डाल सकता है, और निश्चित रूप से आपको किसी अन्य निर्देशिका को जोड़ना चाहिए जो पहले से ही आपके पायथनपैथ में है।) यह PyCharm के करीब है, लेकिन कम दार्शनिक रूप से सही है।

+0

आपके दोनों सुझाव काम करते हैं। धन्यवाद! – Pibborn

+0

दृष्टिकोण # 1 मेरे लिए काम किया। यह दस्तावेज कहां है? – alex

+1

@alex यह [कमांड लाइन और पर्यावरण डॉक्स] में है (https://docs.python.org/3/using/cmdline.html), लेकिन यह तब तक स्पष्ट नहीं है जब तक कि आप समाधान को पहले से ही नहीं जानते! यह एक दयालुता है जिसका उल्लेख नहीं है [ट्यूटोरियल के मॉड्यूल अनुभाग] (https://docs.python.org/3/tutorial/modules.html), या यहां तक ​​कि अत्यधिक तकनीकी [आयात प्रणाली संदर्भ दस्तावेज़] (https://docs.python.org/3/reference/import.html)। –

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