Импорт из другого каталога, расположенного в родительском каталоге Python.Python

Программы на Python
Ответить
Anonymous
 Импорт из другого каталога, расположенного в родительском каталоге Python.

Сообщение Anonymous »

Предположим, у нас есть структура проекта типа:

Код: Выделить всё

project/
public_app/
__init__.py
dir/
__init__.py
config.py
subdir/
__init__.py
functions.py
utils.py
my_app/
main.py
В my_app/main.py я хотел бы импортировать некоторые функции из public_app/dir/subdir/functions.py. Решение, которое я нашел, заключалось в добавлении следующего:

Код: Выделить всё

# main.py
import sys
import os
path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../'))
sys.path.append(path)

from public_app.dir.subdir.functions import *
Кажется, это работает, но теперь мне также хотелось бы импортировать из public_app/dir/subdir/utils.py. Однако внутри этого файла содержится и другой относительный импорт:

Код: Выделить всё

# utils.py
from dir.config import *
Если я потом попробую сделать

Код: Выделить всё

# main.py
from public_app.dir.subdir.utils import *
это выдает ошибку ModuleNotFoundError: нет модуля с именем 'dir'.
Есть предложения, как это сделать? Обратите внимание: в идеале мне бы вообще не хотелось связываться с public_app. Это связано с тем, что это часто обновляемый каталог, извлекаемый из общедоступного репозитория, и требует постоянного изменения импорта. Я также хотел бы сохранить my_app в отдельном каталоге для чистоты/упрощения обслуживания, если это возможно.

Изменить: Выяснил это совершенно случайно. Ответ смотрите ниже.

Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»