修复 Sublime Text 3 中 Mac OSX 上的“shell_cmd”替换

Fix substitution of “shell_cmd” on Mac OSX in Sublime Text 3

我在项目设置中指定的构建系统有问题。目前我的项目设置是这样的

{
    "build_systems":
    [
        {
            "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
            "name": "Anaconda Python Builder",
            "selector": "source.python",
            "shell_cmd": "$project_path/bin/python -u $file"
        }
    ],
    "folders":
    [
        {
            "file_exclude_patterns":
            [
                "pip-selfcheck.json",
                "pyvenv.cfg"
            ],
            "folder_exclude_patterns":
            [
                "lib",
                "include",
                "bin"
            ],
            "follow_symlinks": true,
            "path": "."
        }
    ],
    "settings":
    {
        "binary_file_patterns":
        [
            "*.jpg",
            "*.jpeg",
            "*.png",
            "*.gif",
            "*.ttf",
            "*.tga",
            "*.dds",
            "*.ico",
            "*.eot",
            "*.pdf",
            "*.swf",
            "*.jar",
            "*.zip",
            "client/node_modules/**",
            "data/**"
        ]
    }
}

实际问题所在行:

"shell_cmd": "$project_path/bin/python -u $file"

每次我关闭 sublime 并重新打开它时,我的 shell_cmd 都会被替换为这个

"shell_cmd": "\"python\" -u \"$file\""

我的构建失败了。有没有办法解决这个问题?我该怎么做才能禁用此自动替换?

我已经在 Anaconda 的问题跟踪器中回答了这个问题,但我会在这里为遇到类似问题的任何其他用户回答这个问题。

Anaconda 本身使用该特定构建系统,这就是它被称为 "Anaconda Python Builder" 的原因,它将使用您用作 "python_interpreter" 配置的任何内容更新 "shell_cmd"设置到您的 anaconda 的设置文件中(一般、用户或每个项目)。

如果您对构建系统有特定需求,您应该使用自己的选项创建一个新的构建条目并坚持使用该条目。 Anaconda 的构建系统为需要使用其配置的 Python 解释器而不是嵌入式 ST3 解释器的用户提供了便利。

我通过将 python_interpreter: 'full/path/to/python' 添加到设置字典中,在没有自定义构建系统的情况下解决了这个问题。 python Anaconda Python Builder shell_cmd 中的部分被替换为它。