从ST编辑器运行时如何在控制台中显示python脚本的结果?

时间:2013-09-01 10:51:00

标签: python windows-7 sublimetext sublimetext3 build-system

我是Sublime Text的新手,所以到目前为止我对它的内部结构并不熟悉。据我所知,问题可能与this有关。

我有一个python脚本

var = raw_input("Enter something: ")
print "You entered ", var

请求输入,等待它,然后在Windows控制台提示符下打印出来。

如何在“构建”时创建ST3以在控制台窗口中显示结果?

5 个答案:

答案 0 :(得分:7)

这实际上非常简单,但需要大量挖掘来连接各个部分。我首先想出了一个使用批处理文件的更迂回的方式,但经过一些更多的考虑后,将它们整合到一个Sublime构建系统中。

轻松的方式

以下工作正常:

{
    "cmd": ["start", "cmd", "/k", "c:/python27/python.exe", "-u", "$file"],
    "selector": "source.python",
    "shell": true,
    "working_dir": "$file_dir"
}

将其另存为Packages/User/Python_cmd.sublime-build,选择Tools -> Build System -> Python_cmd,然后使用 Ctrl B 进行构建。

start执行它所说的功能,启动独立于Sublime Text的新流程。 cmdcmd.exe,Windows命令行解释器。程序运行后,/k标志会保持窗口打开(在新的命令提示符下),允许您检查其输出,查看回溯,运行其他命令等。如果您不需要该功能,将其更改为/c(如下所示),当程序运行完毕后,cmd窗口将关闭。

我已经在ST2和ST3上的XP和Win7上进行了测试,并且它在所有这些测试中都很好用,无需更改。


我最初的解决方案:

首先,创建run_python.bat并将其存储在Packages/User目录中(可从Preferences -> Browse Packages...菜单选项访问):

@echo off
c:\Python27\python.exe -u %1
pause

显然,如果它与您不同,请调整python.exe的路径。接下来,使用以下内容创建Packages/User/Python_cmd.sublime-build

{
    "cmd": ["start", "cmd", "/c", "run_python.bat", "$file"],
    "selector": "source.python",
    "shell": true,
    "working_dir": "$packages/User"
}

保存,选择Tools -> Build System -> Python_cmd,切换到上面的Python程序,点击 Ctrl B ,我的朋友,你很高兴。如果您希望cmd.exe窗口保持打开状态以在提示符处输入更多命令,请将/c更改为/k。我没有使用任何GUI对此进行测试,但假设您现在可以从命令行启动它们,它们应该可以使用它。

我在XP上测试了这个,所以它也适用于Win7。它也应该与Sublime Text 2一起使用。

答案 1 :(得分:2)

发出一个新的cmd.exe命令真的很简单。

start cmd /K python main.py

有关更多信息,请参阅here(古代)

/k标志将其他命令“管道”到cmd.exe并运行,直到您自己退出shell,对于想要查看跟踪时非常有用。

/ C标志将其他命令“管道”到cmd.exe并运行直到python程序完成。

所以在你的项目文件中你应该有这样的东西:

"build_systems": [
    {
        "name": "RunPY",
        "cmd": ["start", "cmd", "/K", "python", "main.py"],
        "shell": true,
        "working_dir": "<project_path>"
    },

]

虽然我们在Sublime中讨论build_systems的主题,但我想推荐插件BuildSwitcher,它在ST3上运行正常,只是当你添加了一个时它并不总是会注意到项目文件中的新版本。这也意味着您必须手动为ST3安装插件。

使用该插件,您只需几个按键即可轻松定义和运行不同的构建。一个真正的节省时间。

答案 2 :(得分:0)

SublimeREPL for是SublimeText的插件

它不会打开cmd实例,但可以为您提供REPL,您可以在其中提供输入,这通常是默认控制台无法提供的。

<强>安装

Install Package Control. http://wbond.net/sublime_packages/package_control
Install SublimeREPL
    Preferences | Package Control | Package Control: Install Package
    Choose SublimeREPL
Restart SublimeText2
Configure SublimeREPL (default settings in Preferences | Package Settings |
SublimeREPL | Settings - Default should be modified in Preferences |
Package Settings |SublimeREPL | Settings - User,
this way they will survive package upgrades!

请参阅文档

ctrl + ,, f 表示:按Ctrl和逗号,全部释放,按F。

上面的键绑定用于在REPL中进行评估

如果SublimeText提示无法找到“语言”的REPL,则需要通过

打开REPL
Tools | SublimeREPL | Language

我希望这会有所帮助

答案 3 :(得分:0)

以下是OSX的变体,以防它对任何人都有用:

转到工具 - &gt;构建系统 - &gt;新构建系统...

{
    "cmd": ["/opt/X11/bin/xterm", "-e", "python -u \"$file\""],
    "selector": "source.python"
}

您可以找到有关语法here

的更多详细信息

保存它(例如,在SublimeText为您提供的目录中使用名称mytestbuild.sublime-build),切换到Python文件,从Tools-&gt; Build Systems-&gt; mytestbuild中选择构建系统,然后点击 CMD

这将打开一个xterm,并在xterm窗口中运行你的Python代码。如果你想使用Terminal.app,你可能需要使用this question中的一个技巧。

答案 4 :(得分:0)

[此解决方案显示Sublime中的输出,但作为另一个窗格中显示的自动更新文本文件]

要将输出在Sublime中显示为另一个文件,请执行以下操作:

  1. 创建新的构建系统:Tools > Build Systems > New Build System...
  2. 使用以下配置:
  3. 
        {
            "cmd": ["python.exe", "$file", "1>", "$file_name.__STDOUT__.txt", "2>", "$file_name.__STDERR__.txt"],
            "selector": "source.python",
            "shell": true,
            "working_dir": "$file_dir"
        }
    
    1. 对于您的Python文件,请选择上面的构建系统配置文件:Tools > Build Systems > {your_new_build_system_filename}
    2. ctrl + b
    3. 现在,在您的文件旁边,例如"file.py"您有"file.__STDOUT__.py""file.__STDERR__.py"(错误,如有)
    4. 如果您将窗口拆分为3列或网格,您将立即看到结果,而无需切换面板/窗口