如何在 windows 10 中从 cmd 上的 sublime text 3 运行 python file/script?

How to run a python file/script from sublime text 3 on cmd in windows 10?

我一直在互联网上上下搜索以寻找解决方案。我知道有 SublimeREPL,我可以轻松使用它在 sublime text 3 中正确地 运行 python 代码。但是,这对我来说还不够。我想从 sublime text 3 运行 我的 python cmd 文件。

我有很多原因。最大的原因是我需要经常测试我的 python 文件,而且我不想让我的 sublime text 工作区被成千上万的标签塞满。还有其他几个原因,但目前我只想要一个解决方案。网上几乎到处都在谈论SublimeREPL,所以我一直找不到解决方案。

我也知道我可以通过直接转到文件并在那里 运行 手动使用 cmd,但是不断切换到 cmd 然后一遍又一遍地升华文本是一件很痛苦的事再次.

因此,我正在寻找一个巧妙的解决方案,我可以在 cmd 中从 sublime text 3 运行 我的 python 文件。非常感谢任何帮助。

我正在使用 python 3.7.3

在 Sublime Text 中构建系统的经验法则是,如果你可以制作一个命令行,当在 terminal/console 中手动执行时,会给你想要的效果(并且该命令不会'需要交互式输入),然后你可以把它变成一个构建系统。

在这种情况下,您要做的是生成一个新的 cmd window 并在其中做一些事情;因此,在了解如何使用 Sublime 的宏伟计划中,您使用 Sublime 的事实并不有趣,这可能就是您的搜索没有出现任何结果的原因。

在Windows中,你可以使用像cmd /s /c something这样的终端命令来告诉Windowscmd.exe它应该执行命令something。在你的情况下,你想使用 Python 来执行一个程序,所以这可能看起来像下面这样让 Python 执行 my_file.py.

cmd /s /c python my_file.py

但是,如果您在现有的命令提示符下执行此操作,结果只是 运行 当前 window 中的程序;也就是说,你告诉 cmd 到 运行 一个命令,但它在当前 window 中仍然是 运行ning,这不是你想要的。

为了运行程序在一个新的window中,您需要使用start命令,它会启动一个新程序。一般的格式是这样的:

start "" cmd /s /c python my_file.py

这告诉 start 启动一个新的 cmd 实例,你告诉 运行 程序,所以现在 Python 程序是 运行宁在它自己的 window.

这有一些普遍的问题;最大的一个是,一旦 cmd 执行完你给它的命令,它就会退出。同样,Python 也会在程序结束时退出。其结果是,一旦您的程序完成,window 立即消失,然后您才能看到它做了什么。

您可以将 -i 添加到 python 命令以使其交互,但是您必须与内部 python REPL 交互才能获得它退出并关闭 window,听起来您不想执行此步骤。

在那种情况下,您需要修改给 cmd 的命令,让它也等到您按下某个键。

总而言之,作为一个完整的 sublime-build 文件,其示例可能如下所示:

{
    "shell_cmd": "start \"\" cmd /s /c \"python -u \"$file\" & pause\"",
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",

    "env": {"PYTHONIOENCODING": "utf-8"},
}

这是内部 Python.sublime-build 的一个版本,已修改以扩展上述命令。为了让它工作,您需要能够在终端输入 python 并让它启动 Python 解释器。如果不是这种情况,您需要适当调整 PATH 环境变量。

如果您正在使用 Python 3,您可能需要在命令中将 python 替换为 python3 或类似命令,以便 cmd 知道要执行什么。