Импортировать пакет из подпапки в Python - PullRequest
0 голосов
/ 04 мая 2020

(Я ценю, что в StackOverflow уже есть много похожих вопросов, но ни один из них мне не помог.)

У меня есть следующая структура:

code/
  foo/
    __init__.py
    foo.py
    bar/
      __init__.py
      bar.py

Я хочу иметь возможность импорт foo как пакет в bar.py без возни с sys.

Это мой foo.py:

hello = 'Hello, world!'

Это мой bar.py:

import foo

print(foo.hello)

Но если я выполню python foo/bar/bar.py, я получу следующую ошибку:

ModuleNotFoundError: No module named 'foo'

Из всех вещей, что больше всего сводит меня с ума, так это то, что если я добавлю следующий фрагмент сверху из bar.py:

import pkgutil

search_path = ['.']
all_modules = [x[1] for x in pkgutil.iter_modules(path=search_path)]
print(all_modules)

Тогда я фактически получаю foo в качестве доступного модуля (все еще не работает), здесь:

['foo']
ModuleNotFoundError: No module named 'foo'
...