如何在 Sublime Text 插件中导入 Python 模块?

How can I import a Python module in a Sublime Text plugin?

我在制作 Sublime Text 3 插件时遇到问题。我刚刚在我的 Macintosh 上安装了带有 Python 2.7 的 wxPython。

在终端中,我的 Mac 可以找到 wxPython (import wx)。但是Sublime Text插件的源代码无法导入wxPython.

您可以查看下面的屏幕截图。

我该如何解决这个问题?

插件是使用 Sublime 的内部 Python 解释器执行的,而不是您计算机上安装的任何版本的 Python。几乎所有的标准库都包括在内,但有一些包(包括 Tkinter 等)没有。据我所知,无法使用 pip,例如,将 3rd 方模块安装到 Sublime Text 中。

但是,如果您想包含一些第 3 方代码,只需将其放在您的插件目录中即可。例如,如果您将插件代码存储在 Packages/MyPlugin 中(其中 Packages 是通过选择 Preferences -> Browse Packages... 打开的目录),并且您想要包含第 3 方库 foobar,只需将 foobar 目录复制到 Packages/MyPlugin。然后,在您的插件代码中,使用以下模板,假设您正在尝试为 ST3 (Python 3.3) 和 ST2 (Python 2.6) 编写代码:

try: #ST3
    from .foobar import mymodule
except ImportError: #ST2
    from foobar import mymodule

显然,如果您只是计划支持 ST3(API 中的差异足以让两个版本的编程变得烦人),则不需要 try/except 子句。此外,如果您打算通过包控制或其他方法分发您的插件,请确保您 可以 重新分发第 3 方代码,并且您的许可证与其许可证兼容。