在Mac OS 12.1上使用SublimeREPL,如何避免Sublime Text 4中的input()出现Name



我按照以下短视频中的说明,允许Python脚本在Sublime Text中运行。

https://www.youtube.com/watch?v=-d27eACbjnk

步骤是:

  1. 安装"程序包控制">
  2. 安装"SublimeREPL">
  3. 选择"工具">构建系统>建立新系统'
  4. 粘贴以下内容:
{
"target":"run_existing_window_command",
"id":"repl_python_run",
"file":"config/python/Main.sublime-menu"
}
  1. 另存为"Python_Run"并关闭选项卡
  2. 打开一个新选项卡并另存为"test.py">
  3. 选择"工具">构建系统>Python运行
  4. 粘贴以下文本代码:
name = input("Enter your name: ")
print(name)
  1. 选择"工具">生成"以运行。

  2. 根据提示输入名称。

但是,当我输入名称时,我会收到以下NameError消息:

Enter your name: Sean
Traceback (most recent call last):
File "test.py", line 1, in <module>
name = input("Enter your name: ")
File "<string>", line 1, in <module>
NameError: name 'Sean' is not defined

我发现解决这个问题的唯一方法是用引号输入名称。但是链接的视频演示了上面的工作,而不需要使用逗号作为输入。

我是Python和Sublime的新手,所以希望有一个易于理解的解决方案。

这个答案是假设您运行的是Linux或macOS,并且系统上已经安装了Python 3

您之所以得到NameError,是因为SublimeREPL使用的是Python 2,这是一个两年多前就通过了报废支持的旧版本,早在那之前就被弃用了。然而,并不是每个人都将自己的代码库移植到了当前的Python3,这就是为什么在某些系统上仍然可以找到它的原因。如果你刚刚开始学习Python,你绝对应该从使用Python 3开始,这是该语言的现在和未来,然后在你熟练之后,你可以学习它和Python 2之间的区别。

好消息是,如果您使用的是Linux或macOS的最新版本,那么您的系统上可能已经安装了Python 3,将SublimeREPL指向它相对简单。要开始,请打开Sublime,在Linux上选择Preferences → Browse Packages…,在macOS上选择Sublime Text → Preferences → Browse Packages…。系统的文件浏览器将打开一个名为Packages的文件夹,该文件夹至少包含两个子文件夹SublimeREPLUser(具体取决于您迄今为止安装的插件数量(。打开SublimeREPL文件夹,然后打开config,再打开Python。将名为Main.sublime-menu的文件拖动到Sublime窗口,并将其语法设置为JSON(View → Syntax → JSON(。

第53行应该是这样的:

"cmd": ["python", "-u", "$file_basename"],

python更改为python3:

"cmd": ["python3", "-u", "$file_basename"],

此外,如果将来直接使用REPL,请更改第22行和第39行,使它们也显示为python3

保存该文件,然后切换回原始Python文件并使用Python_Run构建系统。您现在应该能够使用您的原始测试代码并获得正确的结果。


作为参考,Sublime Text 4Packages文件夹位于不同操作系统的不同位置:

  • Linux:~/.config/sublime-text/Packages
  • macOS/OS X:~/Library/Application Support/Sublime Text/Packages
  • Windows常规安装:C:UsersYourUserNameAppDataRoamingSublime TextPackages
  • Windows可移植安装:InstallationFolderSublime TextDataPackages

相关内容

  • 没有找到相关文章