Eclipse PyDev игнорирует __init__, что приводит к неразрешенной ошибке импорта модуля - PullRequest
0 голосов
/ 19 октября 2018

Неясно, как правильно структурировать наши проекты / пакеты PyDev в нашем git-репо, чтобы абсолютный импорт работал как , а .Это приводит к тому, что Eclipse выдает ошибку «неразрешенного импорта», которую я не понимаю.

В настоящее время репозиторий выглядит так:

REPO/ [repo master]  # Set as source folder (PYTHONPATH)
    package_A/       # Set as source folder (PYTHONPATH)
       __init__.py   # from foo import some_func
       __main__.py   # Absolute import required
       foo.py        # some_func()
    package_B        # Set as source folder (PYTHONPATH)
       __init__.py
       __main__.py
       bar.py
__init__.py          # Empty

package_A/__init__.py выглядит так:

from foo import some_func

Теперь я перехожу на package_A/__main__.py и хочу импортировать some_func() из foo:

from foo import some_func       # works
from package_A import some_func # unresolved import error in Eclipse
# The latter case should work due to the initial import in __init__

Согласно этому источнику , второй вариант должен работать,Тот факт, что это не означает, что по какой-то причине содержимое package_A/__init__.py не имеет никакого эффекта.В чем моя ошибка?

В чем причина вышеуказанной нерешенной ошибки импорта?

1 Ответ

0 голосов
/ 23 октября 2018

Если вы хотите импортировать package_A, его не следует устанавливать как саму исходную папку.

Т.е.: только REPO следует пометить как исходную папку (это единственная запись, которая должна бытьв питоне).

Обратите внимание, что from foo import some_func не будет работать в этом случае ... Итак, вы можете написать абсолютный импорт from package_A.foo import some_func или относительный импорт: from .foo import some_func.

...