Python: ошибка импорта с пакетом - PullRequest
1 голос
/ 16 февраля 2012

Я разрабатываю в Eclipse, используя плагин Pydev.Когда я запускаю проект в затмении, все работает нормально.Но когда я пытаюсь запустить его из командной строки, я получаю ошибку импорта.У меня есть такая структура каталогов:

      TGRParser 
        |----tgr
              |--graph
              |--main
              |   |-- main.py
              |   |-- __init__.py  
              |--parser
                  |--__init__py
                  |--parserClass.py

Теперь у меня есть класс Main в модуле main (main.py) в пакете main (TGRParser / tgr / main).Теперь в классе Main я пытаюсь вызвать

    from tgr.parser.parserClass import Parser

. Он отлично работает из затмения, но совсем не работает из командной строки.Я проверил sys.path.Они оба одинаковы в строке cmd и в затмении.

Там написано:

 File "main.py", line 6, in <module>
from tgr.parser.parserClass import Parser
ImportError: No module named tgr.parser.parserClass

Ответы [ 2 ]

2 голосов
/ 16 февраля 2012

Добавьте каталог TGRParser в переменную окружения PYTHONPATH.

1 голос
/ 16 февраля 2012

Если вы запускаете это в командной строке как

python main.py

внутри основной папки, тогда вы не можете использовать import tgr..., так как tgr на несколько каталогов вверх. Также невозможно выполнить относительный импорт, пока вы запускаете программу внутри пакета, поэтому выполнение from .. import parser не будет работать.

Ваш лучший выбор - переместить main.py в папку TGRParser рядом с папкой tgr. На этом этапе запуск python main.py должен работать просто отлично.

...