首页 > 解决方案 > Sublime 3 路径变量

问题描述

我正在尝试在 Windows 10 pc 上为 sublime text 3 设置 python 3 构建路径。系统说找不到指定的文件,但是我已经添加了路径并设置了python3的构建系统。我尝试构建时收到的错误消息如下..

[WinError 2] The system cannot find the file specified

[cmd: ['python3', '-i', '-u', 'C:\\Users\\strinkjr\\Desktop\\Python Stuff\\errorSearch.py']]

[dir: C:\Users\strinkjr\Desktop\Python Stuff]

[path: C:\Users\strinkjr\Desktop\Python Stuff\]

[Finished]

我的构建环境文件如下:

{
    "cmd": ["python3", "-i", "-u", "$file"],
    "file_regex": "^[ ]File \"C:/Users/strinkjr/AppData/Local/Programs/Python/Python36/python.exe\", line ([0-9]*)",
    "selector": "source.python"
}

我不确定我是否错误地设置了路径,或者我是否错误地设置了构建环境。(也许两者都有)

标签: python-3.xpathinstallationwindows-10sublimetext3

解决方案


您遇到的几个总体问题阻碍了您的发展。

首先是你没有PATH正确设置。就命令执行而言,构建输出向您显示了PATH当前定义的内容:

[path: C:\Users\strinkjr\Desktop\Python Stuff\]

PATH是 Windows 将在其中查找您尝试执行的程序的位置列表,因此除非python3.exe此目录中有一个,否则您不小心将 设置为PATH您正在运行的文件的位置,而不是解释器那是用来运行它们的。

其次,一旦执行完脚本,您将传递-i给 Python 解释器以使其进入交互模式。Sublime 不允许您与在 a 中执行的程序进行交互sublime-build,因此如果您在程序完成执行并进入交互模式后执行此操作,它将有效地挂起,等待您提供您无法提供的输入提供。

您的构建系统还包含以下file_regex条目:

"file_regex": "^[ ]File \"C:/Users/strinkjr/AppData/Local/Programs/Python/Python36/python.exe\", line ([0-9]*)",

sublime-build文件中,file_regex用于检测程序输出中的哪些行是错误的,以便 Sublime 可以允许您在错误之间导航,或者如果您打开了该选项,则可以使用内联错误标记它们。

虽然这不会阻止你的程序运行,但它阻止 Sublime 识别错误,因为文件名永远不会匹配。

我会尝试sublime-build类似以下的文件,看看它是否更适合您:

{
    "shell_cmd": "python3 -u \"$file\"",
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",    

    "env": {
        "PYTHONIOENCODING": "utf-8",
        "PATH": "$PATH;C:/Users/strinkjr/AppData/Local/Programs/Python/Python36/"
    },
}

这删除了-i阻止解释器进行交互以停止任何问题的参数,并使用shell_cmd而不是cmd提供命令,这会稍微改变格式。

这里file_regex是一个匹配常规 python 错误的错误,它类似于您已经提供的错误,但没有对 Python 可执行文件的引用。

这里最大的补充是几个环境变量。第一个确保 Python 知道它应该utf-8用来生成输出,因为这是 Sublime 控制台期望它使用的。如果您尝试显示非 ascii 输出,这会阻止您遇到潜在的错误。

这也应用了一个包含现有路径的新 PATH,并且还添加了一个看起来可能是基于您已经使用的文件的 Python 安装位置的路径。

如果位置不正确,该部分可能需要调整;或者,您可以删除PATH部分并酌情sublime-build修改您的环境变量。PATH请注意,如果这样做,您可能需要重新启动 Sublime 才能看到更改。


推荐阅读