Неустраненные ошибки импорта, но успешный импорт все еще происходит

Я работаю над проектом в Eclipse Juno. Я написал класс с именем Character в пакете с именем chargen.py. Рядом с from chargen import Character есть красный крестик:

Unresolved import: Character
Character Found at: Avarice_v0.PlayAvarice_v0

from chargen import Character

Но импорт работает. Весь код на данный момент просто такой:

from chargen import Character

def main():
    PLAYER = Character("")
    print(PLAYER)

if __name__ == '__main__':
    main()

Этот код приводит к печати __str__, подтверждающей запуск Character(""). Кроме того, он не выдает ошибок при запуске. Почему Eclipse помечает это Unresolved import: Character?

Red X в примере Eclipse


person Vin Breau    schedule 04.02.2013    source источник
comment
Пробовали ли вы сборку/очистку после импорта?   -  person Walls    schedule 04.02.2013
comment
Пожалуйста, объясните, что вы имеете в виду? Я не понимаю.   -  person Vin Breau    schedule 04.02.2013
comment
В верхнем меню соберите проект: Project › Build Project. Затем попробуйте очистить его: Проект › Очистить...   -  person Walls    schedule 04.02.2013
comment
Build Project выделен серым цветом, установлен флажок Build Automatically. Я снял флажок, создайте вручную. Тогда очистка проекта никак не повлияла на ошибку.   -  person Vin Breau    schedule 04.02.2013


Ответы (2)


Я понял, как избавиться от ошибки. Я переместил все на одну директорию вверх. Настройки проекта показали, что PYTHONPATH включает основной каталог, но не вложенный. Переместив все это вверх и удалив теперь пустую исходную папку, у меня не осталось неразрешенных ошибок импорта. Это помогло мне лучше понять варианты PYTHONPATH, предлагаемые при первоначальной настройке проекта в PyDev.

person Vin Breau    schedule 04.02.2013

В свойствах вашего проекта есть панель под названием «PyDev — PYTHONPATH» с подпанелью «Внешние библиотеки». Вы можете добавить исходные папки (любую папку с файлом init.py) в путь, используя эту панель. После этого код вашего проекта сможет импортировать модули из этих исходных папок.

person Walls    schedule 04.02.2013
comment
Ваш ответ поднимает вопрос, который у меня уже давно есть. Поскольку chargen.py находится в той же папке, что и PlayAvarice, импорт также выглядит в том же каталоге, верно? Вот почему этот импорт работает. Похоже, ошибка означает, что пакет chargen.py отсутствует в PYTHONPATH. Когда я создаю новый проект в Eclipse, он спрашивает, хочу ли я добавить каталог в PYTHONPATH, создать SRC и добавить его или добавить вручную позже... является ли эта ошибка результатом неправильного выбора в создание проекта? Я никогда не уверен, какой выбор подходит для каждого проекта. - person Vin Breau; 05.02.2013
comment
Это похоже на настройку внешних ссылок. Если вы не собираетесь создавать множество вещей, которые не все взаимосвязаны, я думаю, вы можете оставить это. Но когда вы работаете над вещами, которые планируете использовать в разных проектах, может помочь добавить их в начале, чтобы они не всплывали снова в будущем. - person Walls; 05.02.2013