2017-01-11 6 views
1

У меня есть структура каталогов вроде следующего:Попытка относительного импорта за пределы пакета верхнего уровня?

game/ 
    graphics/ 
      __init__.py 
      render.py 
    sound/ 
     __init__.py 
     echo.py 
    __init__.py 

и мой render.py читает from ..sound.echo import echo_test, , но каждый раз, когда я запускаю его он говорит Attempted relative imports beyond top-level package.
Как я могу это исправить?

+4

Вы видели это? https://stackoverflow.com/questions/11536764/how-to-fix-attempted-relative-import-in-non-package-even-with-init-py?rq=1 –

+0

@cricket, чтобы быть откровенным, я изучал python только на 2 дня и может получить любой из комментариев по вашей ссылке .. !! я использую pycharm, и когда я набрал «from game.sound.echo», он работал хорошо. я не получаю различие между относительным импортом и этим. – roydejung

+1

Хорошо, если бы вы учились всего на два дня, я мог бы предложить, возможно, начать с учебника. https://docs.python.org/3/tutorial/ –

ответ

0

Вам нужен относительный импорт?

Вы можете использовать from game.sound.echo import echo_test?

Хотя, поскольку вы не указали точную стеклянную трассировку, ошибка может исходить от echo.py. Однако попытка «импортировать за пределы пакета высшего уровня» является самоочевидной.

PEP 328 может быть стоит прочитать

0

Я предполагаю, что вы пытаетесь следующее, или что-то подобное: python render.py

Но это лечение render.py как сценарий, а не компонента пакет. Если вы пишете внешний скрипт, где вы import render, а затем проверьте функции render, импорт должен работать нормально.

Вы можете посмотреть на Hitchhiker's Guide to Python