gpt4 book ai didi

python - 无法将输入发送到 Sublime Text 中正在运行的程序

转载 作者:太空狗 更新时间:2023-10-29 17:40:24 27 4
gpt4 key购买 nike

我正在尝试让 Sublime Text 3 运行 Python 脚本。一个简单的两行

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

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

看到网站上类似问题的数量,这对很多用户来说都是一个问题,所以我浏览了这些并尝试了......东西。制作了一份 exec.py 文件的副本,评论了一行,制作了一个新的 pythonw 构建文件,尝试修改构建文件......似乎没有任何效果。

没有确定的解决方案,如何使用 Sublime Text 处理输入?

最佳答案

Sublime Text 本身无法通过 raw_input() 处理输入(Python 2)或 input() ( python 3)。其他语言也是如此——Ruby 的 gets , Java 的 Scanner类,Node 的 readline类,scanf在 C 中,cin在 C++ 等中。一个短期解决方案是获得 Package Control如果您还没有,请安装 SublimeREPL .它允许您通过正在运行的 REPL 传输或运行部分或全部代码。它可能需要对 Main.sublime-menu 进行一些配置文件以使您首选的解释器正常运行。或者,您可以使用出色的 Terminus插件 - 详情在底部。

如果您正在运行的代码不能很好地与 SublimeREPL 兼容(例如,您正在使用 C/C++/Java 等,并且需要在运行前编译代码),或者您只想运行它独立于 Sublime,你需要自己制作 build system .将以下内容另存为 Packages/User/Python_cmd.sublime-build :

window

{
"cmd": ["start", "cmd", "/k", "c:/python38/python.exe", "$file"],
"selector": "source.python",
"shell": true,
"working_dir": "$file_dir",
"env": {"PYTHONIOENCODING": "utf-8"}
}

根据需要更改 Python 可执行文件的路径。然后,转到 Tools -> Build System 并选择 Python_cmd , 当您按下 CtrlB 进行构建时,一个新的 cmd窗口将打开并运行您的文件。 /k选项在程序运行完成后返回到命令提示符,而不关闭窗口,以便您可以检查输出、回溯等。

请注意,此构建系统是特定于 Windows 的,因为 macOS 和 Linux 没有 cmd .这些平台的构建系统如下。


苹果操作系统

如果您运行的是 OS X/macOS,以下构建系统将在终端的新实例中打开您的程序。另存为 Packages/User/Python_Terminal.sublime-build .在我对 macOS 10.15 的测试中,终端窗口在激活时并不总是出现在顶部,所以如果您可能需要在其他窗口后面寻找它。

{
"shell_cmd": "osascript -e 'tell app \"Terminal\" to do script \"cd $file_path && python3 -u $file\"'",
"working_dir": "$file_path",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8"}
}

如果您的 Python 可执行文件不在您的 $PATH 上,您可能需要指定它的路径。 .


Linux

最后,这是 Linux 的构建系统。它是在 Ubuntu 上测试的,所以如果你使用其他发行版,你需要确保 gnome-terminal已安装。另存为 Packages/User/Python_shell.sublime-build .程序运行完毕后,按任意键关闭窗口。

{
"shell_cmd": "gnome-terminal --working-directory=$file_path -- bash -c 'python3 -u \"$file\" && read -n 1 -s -r'",
"working_dir": "$file_path",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8"}
}

作为引用,Packages目录是选择 Preferences → Browse Packages… 时打开的目录:

  • Linux:~/.config/sublime-text-3/Packages~/.config/sublime-text/Packages
  • OS X:~/Library/Application Support/Sublime Text 3/Packages~/Library/Application Support/Sublime Text/Packages
  • Windows 常规安装:C:\Users\<b><i>YourUserName</i></b>\AppData\Roaming\Sublime Text 3\PackagesC:\Users\<b><i>YourUserName</i></b>\AppData\Roaming\Sublime Text\Packages
  • Windows 可移植安装:<b><i>InstallationFolder</i></b>\Sublime Text 3\Data\Packages <b><i>InstallationFolder</i></b>\Sublime Text\Data\Packages

确切路径取决于版本以及您是否从 Sublime Text 3 升级。

我只用 Python 测试了这些构建系统,但它们应该适用于任何语言。修改时,只需确保所有单引号和双引号都匹配——否则会出现错误或意外行为。


更新

有一个独立于平台的插件叫做Terminus除其他外,它提供了默认 exec 的替代品构建系统引擎。它允许您在代码下方的构建面板中与您的程序进行交互。从 Package Control 安装后,创建以下构建系统(再次针对 Python):

{
"target": "terminus_exec",
"cancel": "terminus_cancel_build",
"cmd": [
"/path/to/python", "-u", "$file"
],
"working_dir": "$file_path",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
}

如上所述,您需要调整 Python 可执行文件的路径。请务必阅读文档以找出可以使用这个出色插件的所有其他方式。

关于python - 无法将输入发送到 Sublime Text 中正在运行的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19254765/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com