2016-04-05 26 views
3

Durum:
Verilen bu proje yapısı:Python 3 - ImportError: adında bir modül

project/ 
    app/ 
    __init__.py (empty) 
    stamp.py 
    tests/ 
    test.py 
    main.py 
main.py yılında

ve test.py ben aracılığı stamp.py işlevselliğini almak için çalışıyorum:

from app.stamp import Timestamp 

Timestamp, main.py adresinde içe aktarılır, ancak test.py numaralı telefona girilmez. s hatası:

ImportError: No module named 'app' 

Soru:
nasıl test.py içinde stamp.py arasında piton 3,5 ithalat işlevselliği elimden?

+0

test.py'yi nasıl çağırıyorsunuz? –

+0

Terminal aracılığıyla: python tests/test.py sadece ithalatı nasıl yapacağınızı test etmek için test.py'de bir şey ifade etmiyor – DavidR

+0

Nasıl test.py içinde stamp.py'yi arıyorsunuz? – idjaw

cevap

2

emin klasör testleri yapmak içeren __init__.py Kodun altında

sizin project

modülleri ve dosyaları aramak için geçeceği test.py

Python sys.path için proje project yolunu ekler

import sys 
sys.path.append("/path/to/project") 
from app.stamp import Timestamp 
+0

Thx tümü. Önerildiği gibi 'sys' yi de' os' olarak aldım ve sınama.py 'sys.path.append (os.path.abspath ('.'))' Için şu kodu ekledim. Ayrıca tüm '__init __. Py' dosyaları çalışır – DavidR

+0

@DavidR yardımcı olduğunu bilmek için çok mutlu :) \ __ init__.py normal bir dizin bir paket olarak davranır – haifzhan

+0

Do' __init __. Py' dosyaları python 3'te herhangi bir fayda sağlarlar. artık gerek yok – DavidR

0

project/ olduğundan emin olun sizin PYTHONPATH, koyun ve project/ dizinde __init__.py dosya ve sonra from project.app.stamp import Timestamp aramak mümkün olacak.

İlgili konular