Не удается импортировать модуль из зависимого проекта в PyDev - PullRequest
9 голосов
/ 09 апреля 2011

Я, вероятно, делаю что-то действительно глупое здесь, но это сводит меня с ума.

У меня есть два проекта PyDev в Eclipse.Один проект, «Анализ», зависит от другого, «PyCommon».Я на 100% уверен в этом, так как когда я смотрю ссылки на проекты для Analysis, проверяется PyCommon, и автоматический импорт / завершение кода работает, когда я ссылаюсь на элементы в PyCommon из Analysis.

Я пытаюсьнаписать / запустить модуль в Analysis.Это модуль fhb / analysis / log_parsers.py.

Я пытаюсь импортировать элемент OrderStatus из fhb / pycommon / types / order_status в проекте PyCommon.Итак, мой оператор импорта -

'из fhb.pycommon.types.order_status import OrderStatus'

PyDev четко знает, где это, потому что этот оператор импорта был написан автоматически PyDev о коррекции быстрого исправления.Тем не менее, когда я пытаюсь запустить основную функцию в log_parsers.py, я получаю следующее:

Traceback (последний вызов был последним): Файл "/ workspace / Analysis / src / fhb / analysis / log_parsers.py ", строка 6, из fhb.pycommon.types.order_type import OrderType ImportError: Нет модуля с именем pycommon.types.order_status

Все эти пакеты находятся в правильной исходной папке ('src') в каждом проекте.

Кроме того, несмотря на то, что Analysis абсолютно настроен для ссылки на PyCommon, когда я смотрю в PyDev-PYTHONPATH в свойствах Analysis, только собственная папка src Analysis отображается на вкладке «Исходная папка», иэто единственный проект, который я вижу, если нажать «Добавить исходную папку»

Ответы [ 4 ]

3 голосов
/ 01 ноября 2011

Лучший способ проверить, в чем проблема, - это набрать:

import sys
print('\n'.join(sorted(sys.path)))

во входе вашей программы, чтобы увидеть, правильно ли установлен PYTHONPATH, как вы ожидаете ...

См .: Импорт из другого проекта в pydev для получения подробной информации о том, как должна выглядеть структура (в худшем случае, если она уже настроена, это может быть ошибка кэша PyDev - перезапуск Eclipse исправил бы это в этом случае - иначе, это вероятно некоторая неправильная конфигурация).

2 голосов
/ 21 апреля 2013

Я думаю, что pydev имеет проблемы с похожими именами пакетов рядом с корнем имени пакета "fhb". У меня та же проблема. Удаление пакетов в одном из проектов позволяет мне без проблем ссылаться на другой.

Я не смог решить проблему, но я думаю, что это связано с тем, что корневая папка пакета не изменилась.

0 голосов
/ 18 июля 2014

Ваша проблема может быть вызвана отсутствием __init__.py в некоторых папках вашего модуля.

Для вашего примера, для использования OrderStatus из order_status.py в fhb.pycommon.types.order_status вам необходимо иметь (возможно, пустой) файл __init__.py в типах fhb, fhb / pycommon и fhb / pycommon / types.

Также обратите внимание, что для правильной работы pylint для fhb / analysis / log_parsers.py вам также необходимо иметь __init__.py в fhb / analysis.

0 голосов
/ 12 апреля 2011

Полагаю, вам нужно добавить путь PyCommon в PYTHONPATH, иначе он не сможет найти фактические модули для импорта.

...