Sublime Text 3 - Python构建系统困惑

0 投票
1 回答
5608 浏览
提问于 2025-04-17 22:33

首先,感谢大家的帮助。

我正在学习Python,并希望继续使用Sublime Text 3,就像我在其他项目中一样。根据我的了解,Sublime内部的Python版本是3.3,但我想使用2.7.6。按照其他例子的做法,我创建了一个新的构建系统,内容如下:

{
  "cmd": ["/usr/local/bin/python", "-u", "$file"],
  "file_regex": '^[ ]*File \"(...*?)\', line ([0-9]*)",
  "selector": "source.python"
}

当我切换到这个新的构建系统,打开控制台,然后尝试用Python 2的语法运行以下命令时

print "Hello, world."

我收到一个“无效语法”的错误。不过,如果我尝试用Python 3所需的括号来运行同样的命令

print("Hello, world.")

这个命令就能成功执行。换句话说,控制台似乎并没有使用2.7.6的构建系统。

让我感到困惑的是,如果我用上面相同的Python 2语法保存一个新的test.py文件,然后用默认的Python 3构建系统来构建它,控制台会输出print命令成功执行的信息——尽管语法应该不兼容(就像在控制台中那样)。看起来我在控制台直接运行命令和运行文件的构建时,得到的结果是不同的。

我相信这可能是我理解上的误区,但我很感激任何想法。

谢谢。

1 个回答

0

首先,你可能不知道的是,

print("Hello World")

在Python 3和后来的Python 2版本(包括2.7.6)中都是有效的。所以,如果你从命令行运行你的文件,无论使用哪个解释器,它都会正常执行。

你可能还对Sublime中的控制台和构建系统感到困惑。控制台可以通过按 Ctrl` 或选择 View -> Show Console 来打开,它运行的是Sublime的内部版本的Python,如果你使用的是最新版本,那就是一个简化版的Python 3.3.3。在控制台中,无论你怎么尝试,都无法运行Python 2的命令。控制台主要用于运行Python API命令来控制Sublime本身,但在构建非插件文件时没有用处。

构建系统允许你通过外部编译器、解释器或其他工具来运行你的程序。你可以在 Tools -> Build System 菜单中选择一个来激活它,然后按 CtrlB(在OS X上是 CommandB)来运行。

所以,为了验证你的构建系统是否正常工作,创建一个新的 .py 文件,里面写上

print "Hello World"

。保存文件后,选择 Tools -> Build System -> Python(菜单中第一个选项,在 MakeRuby 之间)。然后按 CtrlBCommandB,根据你的操作系统来选择,看看Sublime底部打开的面板。它应该在第一行显示“Hello World”,下面还有一行显示 [Finished in 0.05 seconds] 或类似的内容。

现在,选择 Tools -> Build System -> Python 3(或者你给新构建系统起的名字),再按 Ctrl/CommandB,这时你应该会在构建面板中看到一个关于语法错误的追踪信息。

撰写回答