我是Sublime Text的新手,所以到目前为止我对它的内部结构并不熟悉。据我所知,问题可能与this有关。
我有一个python脚本
var = raw_input("Enter something: ")
print "You entered ", var
请求输入,等待它,然后在Windows控制台提示符下打印出来。
如何在“构建”时创建ST3以在控制台窗口中显示结果?
答案 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的新流程。 cmd
是cmd.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,则需要通过
打开REPLTools | 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中显示为另一个文件,请执行以下操作:
Tools > Build Systems > New Build System...
{ "cmd": ["python.exe", "$file", "1>", "$file_name.__STDOUT__.txt", "2>", "$file_name.__STDERR__.txt"], "selector": "source.python", "shell": true, "working_dir": "$file_dir" }
Tools > Build Systems > {your_new_build_system_filename}
"file.py"
您有"file.__STDOUT__.py"
和"file.__STDERR__.py"
(错误,如有)