2016-09-28 3 views
-1

В top папки у меня есть питон файл (helpers.py), который содержит одну функции:питона: импорт вспомогательной функции в модуле

def play(name, verbose=False): 
     if verbose: 
     print name + "with verbose on" 
    else: 
     print name + "verbose off" 

И в подпапке project У меня есть второй файл питон (program.py), что импорт и использует helpers.py:

from .. import helpers as hp 

def main(device,verbose=False): 
    hp.play(device) 
    #here goes the code 

if __name__ == "__main__": 
    #Test the program 
    main('Foo') 
    main('Foo', verbose=True) 

Оба папок содержит файл __init__.py разрешить импортируемый модуль. Я хочу выполнить файл program.py для проверки основной функции. После How to fix "Attempted relative import in non-package" even with __init__.py я пытаюсь запустить:

python -m top.project.program 

получение

# /usr/bin/python: No module named top.project 

Я не понимаю, что я делаю неправильно. Любая помощь? спасибо

ответ

0

Ответ на комментарий принятого ответа по ссылке, опубликованной в моем вопросе. Неважно, из какого каталога вы выполняете команду python. Код работает при выполнении следующей команды оболочки:

python -m top.project.program 

Из top каталога только. Он не работает, если выполняется из его подкаталога project.

0

-m не указывает на импорт; он ожидает путь к модулю, который вы хотите выполнить. Поэтому он, вероятно, хочет -m top/project/program.py (хотя вам может понадобиться полный путь).

+0

Не могли бы вы привести пример? – diegus

+0

Пробовал с полным пути. Это дает мне ValueError: Попытка относительного импорта в непакет – diegus

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