2016-10-28 22 views
6

Pycharm 2016.2.3, Mac OS X 10.11.1, Python 3.5 (Homebrew);İçe aktarma ifadesi PyCharm üzerinde çalışır, ancak terminalden değil

Bu klasör yapısını

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

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

bar.py: 
print("bar") 

sahip Yani benim beklenen çıkışı pycharm çalıştırılan bu iyi çalışır

bar 
foo 

olduğunu. Ben this question bulduk

$ 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' 

, aynı sorun hakkındadır: Ben terminalden çalıştırmak Ancak, ben bir ImportError olsun. Ancak, önerilen çözümlerin hiçbiri benim için işe yaramıyor, çünkü PyCharm'ın yaptığı gibi aynı Python yorumlayıcısını kullanıyorum ve şu anda somepackage/ klasörünü içeren klasördeyim.

Bu sorunun nasıl çözüleceği konusunda başka önerileri olan var mı? Teşekkür ederim teşekkür ederim!

+1

Bazı paketlerde '__init __. Py' dosyası var mı? Bu python'a paketin – Mitta

+0

olduğunu gösterir Evet öyle. Sorumu düzenleyeceğim, teşekkürler! – Pibborn

cevap

8

Bir betik gibi foo.py çalıştırıyorsunuz, ancak gerçekten bir modül gibi kullanıyorsunuz. Yani doğru çözüm, modül olarak çalıştırmaktır:

Kayıt için
python3 -m somepackage.foo 

, başka bir alternatif gibi senin yolunu düzenlemektir:

export PYTHONPATH=. 

(Ya orada mutlak dizini koyabilirsiniz, ve tabii ki PYTHONPATH'nızda bulunan diğer dizinleri de eklemelisiniz.) Bu PyCharm'ın ne yaptığına daha yakındır, ancak daha az felsefi olarak doğrudur.

+0

Her iki öneriniz işe yarıyor. Teşekkür ederim! – Pibborn

+0

Yaklaşım # 1 benim için çalıştı. Bu nerede belgelenmiştir? – alex

+1

@alex [Komut Satırı ve Çevre belgeleri] 'nde (https://docs.python.org/3/using/cmdline.html) var, ancak çözümü zaten bilmiyorsanız, oraya bakmak zor değil! [Eğitmenlerin Modüller bölümünde] (https://docs.python.org/3/tutorial/modules.html) veya son derece teknik [Import System referans dokümanları] (https:// /docs.python.org/3/reference/import.html). –

İlgili konular