Simple Sublime Text 3 python27 构建系统 - 将项目文件夹添加到路径

Simple Sublime Text 3 python27 build system - add project folder to path

我正在尝试在 sublime text 3 中设置一个非常简单的 python 2 构建系统。

python 的默认构建环境有效,但我希望能够通过将项目文件夹添加到 PYTHONPATH 来导入项目的顶级模块。

这是我对构建系统的尝试:

{
  "cmd": ["python", "-u", "$file"],
  "env": 
  {
      "PYTHONPATH": "$project_path"
  },
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

终端弹出:

Traceback (most recent call last):
  File "C:\project", line 4, in <module>
    from lib.util.utilities import pairwise
ImportError: No module named lib.util.utilities
[Finished in 0.3s]

它没有看到 $project_path 文件夹,否则它将能够导入实用程序,因为 lib/ 是顶级项目文件夹中的一个文件夹。我该如何解决这个问题?

我在 x64 Windows 8.1

根据我的测试,a post on Sublime Text's forums,变量在env中没有扩展。

我通过运行将以下 Python 代码与您的构建系统结合在一起发现了这一点:

import os

print(os.environ['PYTHONPATH'])

输出:$project_path.

使用以下构建系统会起作用,尽管每当您 运行 您的代码时都会产生 shell 的开销:

{
    "shell_cmd": "export PYTHONPATH=\"$project_path\"; python -u \"$file\"",
    "windows":
    {
        "shell_cmd": "set \"PYTHONPATH=$project_path\" & python -u \"$file\"",
    },
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

这对我来说适用于 OS X 和 Windows,设置如下:

te st
├── lib
│   ├── __init__.py
│   └── util.py
├── src
│   └── te st.py
└── test.sublime-project