Использование относительных импорта в Python имеет один недостаток, вы не будете иметь возможность запускать модули как standalones больше, потому что вы получите исключение: ValueError: Attempted relative import in non-package
Как правильно использовать относительный или абсолютный импорт в модулях Python?
# /test.py: just a sample file importing foo module
import foo
...
# /foo/foo.py:
from . import bar
...
if __name__ == "__main__":
pass
# /foo/bar.py: a submodule of foo, used by foo.py
from . import foo
...
if __name__ == "__main__":
pass
Как я должен изменить пример кода для того, чтобы быть в состоянии выполнить все: test.py
, foo.py
и bar.py
Я ищу решение, которое работает с python 2.6+ (включая 3.x).
Отметьте эту тему: http://www.velocityreviews.com/forums/t502905-relative-import-broken.html –
Спасибо, к сожалению, я знал об этом старом потоке, но я не нашел решения проблемы. До сих пор я наблюдал только много людей, жалующихся на это. Нам нужно четкое решение/пример для этой проблемы. – sorin
Связанный: [Как узнать, был ли запущен скрипт python с помощью опции -m интерпретатора?] (Http://stackoverflow.com/questions/8348726/) –