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

Roo*_*ook 7 python build-system windows-7 sublimetext sublimetext3

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

我有一个python脚本

var = raw_input("Enter something: ")
print "You entered ", var
Run Code Online (Sandbox Code Playgroud)

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

如何在"构建"时生成ST3以在控制台窗口中显示结果?

Mat*_*DMo 7

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

简单的方法

以下工作正常:

{
    "cmd": ["start", "cmd", "/k", "c:/python27/python.exe", "-u", "$file"],
    "selector": "source.python",
    "shell": true,
    "working_dir": "$file_dir"
}
Run Code Online (Sandbox Code Playgroud)

将其另存为Packages/User/Python_cmd.sublime-build,选择Tools -> Build System -> Python_cmd和构建CtrlB.

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
Run Code Online (Sandbox Code Playgroud)

显然,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"
}
Run Code Online (Sandbox Code Playgroud)

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

我在XP上测试了这个,所以它也适用于Win7.它也适用于Sublime Text 2.


Dan*_*roa 2

这真的很简单,只需发出一个命令来启动一个新的cmd.exe.

start cmd /K python main.py
Run Code Online (Sandbox Code Playgroud)

更多内容请看这里(古代)

/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>"
    },

]
Run Code Online (Sandbox Code Playgroud)

当我们讨论 Sublime 的主题时,build_systems我想推荐插件BuildSwitcher,它在 ST3 上运行良好,只是它并不总是注意到您何时在项目文件中添加了新的构建。这也意味着您必须手动安装 ST3 插件。

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