如何从 sublime 插件的另一个目录导入 类

How to import classes from another directory in sublime 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):

你走在正确的轨道上;正如您所注意到的,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):