【问题标题】:f-strings works on python IDLE but not on Sublime Textf-strings 适用于 python IDLE 但不适用于 Sublime Text
【发布时间】:2020-08-09 01:45:40
【问题描述】:

我刚刚开始阅读第二版Python速成课程,以防万一有人有这本书,我在第 2 章的“在字符串中使用变量”小节。

问题是,当我进入时

first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}"
print(full_name)

在 Sublime Text 上,应该是输出

ada lovelace

但是,我收到一个错误读数

  File "/Users/davidjiang/Code/Python/python_work/full_name.py", line 3
    full_name = f"{first_name} {last_name}"
                                          ^
SyntaxError: invalid syntax
[Finished in 0.1s with exit code 1]
[shell_cmd: python -u "/Users/davidjiang/Code/Python/python_work/full_name.py"]
[dir: /Users/davidjiang/Code/Python/python_work]
[path: /Library/Frameworks/Python.framework/Versions/3.8/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin]

我已经通过插入检查了 Sublime Text 是否在 python3.7 中运行

{ 
    "cmd": ["python3", "-u", "$file"], 
}

进入构建系统Python3.sublime-build。我的终端也在 python3 中运行。

我还通过查找和使用this link explaining how to insert values into strings. 确保我的代码没有任何错误 此外,我正在阅读的这本书附带了一系列补充课程的在线资源,包括开头编写的代码。当我通过 python IDLE 运行时,代码运行良好。

有人能解释一下为什么代码不能在 Sublime Text 上运行吗?提前致谢!

编辑:显然,我的 Sublime Text 运行的是 python2 而不是 python3。好像输入上面的代码是不行的,请问有没有人建议一下如何把Sublime改成python3?

【问题讨论】:

  • "cmd": ["python3", "-u", "$file"] 并不能确保您运行的是 Python 3.7。尝试运行一个只有 import sys; print(sys.version) 的程序,看看它会打印什么。
  • 另外,我可以在其中看到一些输出,表明您可能已经安装了 Python 3.8 和 3.7(在您可能运行的任何默认 Python 之上)。
  • @user2357112supportsMonica 感谢您的快速回复! Sublime Text 神秘地运行在 python2.7.16 中。但是,重新输入 ` "cmd": ["python3", "-u", "$file"] ` 并没有将其更改为 python3。你知道我如何进行切换吗?谢谢!
  • 为了清楚起见,Sublime 所做的只是要求外部事物(在本例中为 Python)运行文件,所以您的问题不是“f 字符串在 Sublime 中不起作用”,而是使用了错误版本的 Python。诊断显示 Sublime 尝试运行的内容,而不是您认为的构建系统。你可能想从Tools > Build System 中选择Python3 以确保Sublime 使用它。
  • @OdatNurd 我没有来自构建系统选项的 python3 选项;我只有蟒蛇。我运行上面的“cmd”程序为python3创建了一个构建系统,但是在我运行程序之后没有选项。此时,我想我要重新安装 sublime text 看看会发生什么。

标签: python sublimetext f-string


【解决方案1】:

使用 python Repl 应该可以运行,因为它可以运行 F 字符串和输入。确保您将其用作附加组件,否则这将不起作用。 使用它应该有助于 - https://packagecontrol.io/packages/SublimeREPL

【讨论】:

  • 感谢您的快速回复。然而,由于我的书能够在没有任何插件的情况下使用 f-strings,这对我来说是某种问题。我希望有一个不涉及任何额外文本编辑器或附加组件的解决方案。不过,我会研究 python Repl。感谢您的意见!
  • 如果您在 Sublime Text 中使用内置的 python,它将无法工作,因为内置的 Python 不适用于输入和 F 字符串。
  • 我认为这与我正在运行的 python 版本有关。原来我以为我在运行python3.7的时候实际上是在运行python2.7.16,这很奇怪。另外,您确定 Sublime Text 中的内置 python 不适用于 F 字符串吗?我的书说有,所以我不太确定哪个是哪个。
  • 如果您使用的是最新版本的 Python,它将工作。看看这篇文章-forum.sublimetext.com/t/does-python-f-strings-work/43530
【解决方案2】:

在你的错误输出中,写得很清楚

[shell_cmd: python -u "/Users/davidjiang/Code/Python/python_work/full_name.py"]

这里的关键是shell命令是python而不是python3。所以你没有运行正确的构建系统。

{
    "shell_cmd": "python3 -u \"$file\"",
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",

    "env": {"PYTHONIOENCODING": "utf-8"},

    "variants":
    [
        {
            "name": "Syntax Check",
            "shell_cmd": "python3 -m py_compile \"${file}\"",
        }
    ]
}

将其保存为 python3.sublime-build(在 Packages\User 目录中)

使用 ctrl+shift+b 并选择 python3。

下次ctrl+b会自动使用python3

【讨论】:

    【解决方案3】:

    有一种方法可以将 python 3 下载到 sublime text。首先,您要转到构建系统选项,然后一直向下滚动到“新构建系统”。从那里它将打开一个新选项卡并显示:{“shell_cmd”:“make”}。删除它并替换为:

    {
    "cmd": ["python3", "-i", "-u", "$file"],
    "file_regex": "^[ ]File \"(...?)\", line ([0-9]*)",
    "selector": "source.python" }
    

    然后保存,随意命名(确保保存为 .sublime-build 文件)。现在你应该在你的构建系统中拥有它。如果保存后它不存在,则可能需要重新启动程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-13
      • 2016-01-05
      • 2016-08-13
      • 1970-01-01
      • 2017-04-19
      • 2015-04-16
      • 2017-03-31
      相关资源
      最近更新 更多