2016-04-05 3 views
3

Ситуация:
Учитывая эту структуру проекта:Python 3 - ImportError: Нет модуль с именем

project/ 
    app/ 
    __init__.py (empty) 
    stamp.py 
    tests/ 
    test.py 
    main.py 

В main.py и test.py Я пытаюсь импортировать функциональность stamp.py через:

from app.stamp import Timestamp 

Timestamp импортируется в main.py, но не в test.py, где я получаю thi s ошибка:

ImportError: No module named 'app' 

Вопрос:
Как я могу в питона функциональности 3,5 импорта stamp.py в test.py?

+0

как вы вызываете test.py? –

+0

через терминал: тесты python/test.py ничего не придумано в test.py, просто пытаясь понять, как делать импорт. – DavidR

+0

Как вы вызываете штамп.py внутри test.py? – idjaw

ответ

2

убедитесь, что ваши тесты папки содержит __init__.py

Ниже кода присоединяет путь вашего проекта project к sys.path в test.py

питона будет проходить через поиск модулей и файлов в вашем project

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

Thx all. Как и было рекомендовано, я импортировал 'sys', а также' os' и добавил следующий код в test.py 'sys.path.append (os.path.abspath ('.'))'. Он также работает без всех файлов '__init __. Py' – DavidR

+0

@DavidR рад знать, что это помогает :) \ __ init__.py делает обычный каталог обработанным как пакет – haifzhan

+0

Файлы' __init __. Py' предоставляют любые преимущества в python 3, где они находятся не требуется больше – DavidR

0

project/ Убедитесь в ваш PYTHONPATH, поставить и __init__.py файл в каталоге project/ и тогда вы будете в состоянии назвать from project.app.stamp import Timestamp.

Смежные вопросы