需要Python导入模块检查;由于不同的Python版本或Sublime Text导入包的方式?

时间:2015-12-08 12:10:57

标签: python sublimetext sublime-text-plugin

在Sublime Text插件中,我必须使用依赖于版本的导入,它看起来像这样:

python_version_major = version_info[0]

if python_version_major == 3:
    from .matching import whatever...
    from .paths import whatever...
elif python_version_major == 2:
    from matching import whatever...
    from paths import whatever...

注意:它们之间的区别仅在于matchingpaths是否需要以.作为前缀。

Sublime Text v3使用Python v3.3,而Sublime Text v2使用Python v2.6。

代码工作正常,允许插件使用Sublime Text的两个版本,但我想知道是否需要检查是否由于Sublime Text v2和v3加载包的方式不同或由于不同的Python版本?

感谢。

1 个答案:

答案 0 :(得分:2)

使用点作为目录/模块前缀可确定您相对于包目录进行导入。单个点将从包目录导入;并且每个额外的点将进一步寻找父目录。

如果没有点,则导入将是绝对的,并从sys.path寻找。

此功能的实现始于Python 2.4。 Python Enhancement Proposals的信息提到了包括Python 2.6在内的问题。

参考:

Python PEP 0328 -- Imports: Multi-Line and Absolute/Relative