我是 Sublime Text 的新手,所以到目前为止还不熟悉它的内部结构。据我所知,问题可能与此有关。
我有一个 python 脚本
var = raw_input("Enter something: ")
print "You entered ", var
它要求输入,等待它,然后在 Windows 控制台提示符下打印出来。
如何在“构建”时制作 ST3 以在控制台窗口中显示结果?
我是 Sublime Text 的新手,所以到目前为止还不熟悉它的内部结构。据我所知,问题可能与此有关。
我有一个 python 脚本
var = raw_input("Enter something: ")
print "You entered ", var
它要求输入,等待它,然后在 Windows 控制台提示符下打印出来。
如何在“构建”时制作 ST3 以在控制台窗口中显示结果?
这实际上非常简单,但需要大量挖掘才能将各个部分连接起来。我首先使用批处理文件想出了一种更迂回的方式,但经过更多思考后,我将它们全部放在了一个 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
并使用 构建CtrlB。
start
按照它所说的去做,开始一个独立于 Sublime Text 的新进程。cmd
是cmd.exe
,Windows 命令行解释器。该/k
标志在程序运行后保持窗口打开(在新的命令提示符下),允许您检查其输出、查看回溯、运行其他命令等。如果您不需要该功能,请将其更改为/c
(如下面),cmd
程序运行完成后窗口将关闭。
我已经在 XP 和 Win7,ST2 和 ST3 上对其进行了测试,它在所有这些上都运行良好,无需进行任何更改。
我最初的解决方案:
首先,创建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 程序,点击CtrlB,我的朋友,你可以开始了。如果您希望cmd.exe
窗口保持打开状态以在提示符下输入更多命令,/c
请将/k
. 我没有用任何 GUI 测试过这个,但假设你现在可以从命令行启动它们,它们应该可以使用它。
我已经在 XP 上测试过了,所以它也应该适用于 Win7。它也应该适用于 Sublime Text 2。
这真的很简单,只需发出一个命令来启动一个新的cmd.exe
.
start cmd /K python main.py
更多信息请看这里(古代)
该/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>"
},
]
当我们讨论build_systems
Sublime 的主题时,我想推荐插件BuildSwitcher,它在 ST3 上运行良好,只是当您在项目文件中添加新构建时它并不总是注意到。这也意味着您必须为 ST3 手动安装插件。
使用该插件,您只需击键几下即可轻松定义和运行不同的构建。真正的节省时间。
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 中的 Evaluate
如果 SublimeText 提示找不到 REPL for " Language ",则需要通过以下方式打开 REPL
Tools | SublimeREPL | Language
我希望这有帮助
Here's a variant for OSX, just in case it's useful to anyone:
Go to Tools->Build System->New Build System...
{
"cmd": ["/opt/X11/bin/xterm", "-e", "python -u \"$file\""],
"selector": "source.python"
}
You can find more details about the syntax here
Save it (e.g. with the name mytestbuild.sublime-build
in the directory that SublimeText gives you), switch to your Python file, select the build system from Tools->Build Systems->mytestbuild, and hit cmdB.
That will open up an xterm, and run your Python code inside the xterm window. If you want to use Terminal.app, you may need to use one of the tricks from this question.
[此解决方案显示 Sublime 中的输出,但作为自动更新的文本文件显示在另一个窗格中]
要将输出作为另一个文件在 Sublime 中可见,请执行以下操作:
Tools > Build Systems > New Build System...
{ "cmd": ["python.exe", "$file", "1>", "$file_name.__STDOUT__.txt", "2>", "$file_name.__STDERR__.txt"], “选择器”:“source.python”, “壳”:是的, “工作目录”:“$file_dir” }
Tools > Build Systems > {your_new_build_system_filename}
"file.py"
您将拥有"file.__STDOUT__.py"
and "file.__STDERR__.py"
(对于错误,如果有的话)