Я пишу 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