Импортировать и запускать подпакет из пакета - PullRequest
0 голосов
/ 03 февраля 2019

Я ищу способ импортировать подпакет из пакета в Python 3. Рассмотрим следующую структуру:

├── main.py
└── package
    ├── subpackage
    │   └── hello.py
    └── test.py

Что я хотел бы сделать, это использовать функцию внутри hello.py изнутри test.py (который запускается main.py)

main.py

from package.test import print_hello

print_hello()

package / test.py

from subpackage.hello import return_hello

def print_hello():
    print(return_hello())

package / subpackage/hello.py

def return_hello():
    return "Hello"

Но я получаю следующую ошибку:

Traceback (most recent call last):
  File ".\main.py", line 1, in <module>
    from package.test import print_hello
  File "D:\Python\python-learning\test\package\test.py", line 1, in <module>
    from subpackage.hello import return_hello
ModuleNotFoundError: No module named 'subpackage'

Я попытался вставить . в test.py, и это сработало, но мой линтер не работаетне нравится.

enter image description here

Что я делаю не так?


edit: мне удалось использовать абсолютный путь какрекомендуется, но теперь, когда я пытаюсь поместить все в подпапку, pylint не может импортировать.

└── src
    ├── main.py
    └── package
        ├── subpackage
        │   └── hello.py
        └── test.py

enter image description here

1 Ответ

0 голосов
/ 03 февраля 2019

Просто используйте

from .subpackage.hello import return_hello

вместо

from subpackage.hello import return_hello

в файле test.py и прочитайте это руководство, чтобы лучше понять, как работает импорт в python.

Вы можете увидеть фиксированный результат здесь: https://repl.it/@ent1c3d/SoupySadUnderstanding

...