Импорт файла из родительского каталога, только изменение кода в родительском файле - PullRequest
0 голосов
/ 28 января 2020

Я пишу API для инструмента CLI, который позволит пользователям добавлять плагины в папку в главном каталоге. Текущая структура выглядит следующим образом:

project
|___api.py
|   ...
|___plugins
    |___plugin1.py
    |___plugin2.py

То, что я хочу сделать, sh для пользователей, которым нужно только написать import api в своем файле плагина (который будет в подпапке, импортируемой из родительский каталог). Кажется, что следующее не работает:

import project.api
import api
from project import api

Я читал о динамическом импорте файлов из разных каталогов, используя importlib здесь , но этот код помещается в файл, который делает импорт, и я не хочу, чтобы пользователи делали это. Аналогичный случай используется с плагинами для редактора Sublime Text; плагины размещаются в каталоге Packages и имеют доступ к import sublime_plugin, однако при запуске самостоятельно скрипт вызовет ModuleNotFoundError. После небольшого поиска я обнаружил, что плагины выполняются в другом каталоге (в каталоге, где находится sublime_plugin), но не смог найти, как это происходит. Есть ли способ воспроизвести это поведение?

Выполняется plugin1.py. Рабочий каталог при его запуске:

C:\Users\...\project\plugins
...