#python #sublimetext2 #sublimetext3 #sublimetext #sublime-text-plugin
#python #sublimetext2 #sublimetext3 #sublimetext #sublime-text-plugin
Вопрос:
Я хочу иметь структуру каталогов, подобную:
myplugin
-lib
-myplugin.py
-file.py
-another.py
-tests
-file_tests.py
-another_tests.py
Я не могу заставить sublime распознать мой плагин, если он находится в дочернем каталоге. Это нормально, я могу сохранить точку входа в корневом каталоге и импортировать другие мои классы; однако я также не могу заставить это работать. Я написал код и запустил свои тесты нормально, вроде nosetest tests/
и все проходит — когда sublime пытается загрузить пакет, я получаю: ImportError: No module named 'lib'
. Я новичок как в разработке плагинов sublime, так и в Python, но в основном мой плагин похож:
import sublime
import sublime_plugin
from lib.something import Something
from lib.something_else import SomethingElse
from lib.something_else_else import SomethingElseElse
class MyPluginCommand(sublime_plugin.TextCommand):
Ответ №1:
Вы на правильном пути; Sublime сканирует и автоматически загружает файлы только в один каталог глубоко внутри папки Packages, как вы заметили.
Ваша проблема в том, что имя модуля, которое вы хотите импортировать, должно соответствовать имени пакета, в котором оно хранится. С точки зрения кода, который вы привели выше, будет работать следующее, при условии, что плагин, в котором хранится lib
каталог, был назван myplugin
:
import sublime
import sublime_plugin
from myplugin.lib.something import Something
from myplugin.lib.something_else import SomethingElse
from myplugin.lib.something_else_else import SomethingElseElse
class MyPluginCommand(sublime_plugin.TextCommand):