2016-11-02 2 views
0

моя установка:Невозможно импортировать модуль из другого модуля, но может так с третьего модуля (все в разных пакетах)

project 
    extract (package) 
    -> extract_step.py 

    text (package) 
    -> paragraph.py 

    util (package) 
    -> paths.py 

Все три пакеты имеют в них пустые __init__.py. PyDev также показывает пакеты с иконкой пакета, если это имеет значение. В extract_step.py я могу импортировать примерно так:

from text.paragraph import Paragraph 

и создавать объекты Paragraph и использовать их.

В paths.py я пытаюсь импортировать точно так же, но я получаю:

ImportError: No module named 'text.paragraph'; 'text' is not a package 

Я использую Eclipse, и PyDev 5.3. Python 3.5.2. Мой PYTHONPATH в Eclipse, есть только:

/${PROJECT_DIR_NAME} 

я могу запустить extract_step.py без проблем, но я не могу запустить paths.py без получения сообщения об ошибке (даже если импорт является единственной линией в пути. ру). Что я могу сделать, чтобы исправить это и почему это происходит?

EDIT: Я пробовал сделать новый пакет с новым модулем test.py. Я могу импортировать в это! Я также попытался создать новый модуль в пакете утилиты, и он тоже не работает.

+0

Добавить '__init __. Py' для ВСЕХ каталогов, то есть __extract__, __text__ и __util__. –

+0

Все трое имеют его, он пуст во всех из них. – Lomtrur

+0

Извините. Я не читал эту часть вашего вопроса. Можете ли вы удалить все файлы 'pyc' и запустить его снова? –

ответ

0

Решение (исправить):

Я удалил util пакет. Я заново создал пакет и paths.py. Теперь он работает. Это отвечает на вопрос «Как исправить эту» часть моего вопроса, но не ПОЧЕМУ.

Если кто-нибудь знает, почему это произошло, я приму их ответ, но пока, если кто-нибудь столкнется с одной и той же проблемой, я это исправил.

+0

Я предполагаю, что вы использовали Python 2.7 и случайно использовали 'text.py' внутри util, который был получен как относительный импорт (только в Python 3 все импорты абсолютны, хотя вы можете поместить' from __future__ import absolute' в верхняя часть вашего модуля, чтобы заставить импорт быть абсолютным на Python 2.7). –

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