【问题标题】:How to exit a script in Spyder?如何在 Spyder 中退出脚本?
【发布时间】:2014-11-13 17:18:51
【问题描述】:

我正在使用WinPython 的 Spyder。当我使用命令exit() 创建一个新脚本并在那里运行它时,这个命令会杀死内核:

内核似乎意外死亡。使用“重启内核”继续使用此控制台。

在此运行时环境中停止脚本的正确方法是什么?

【问题讨论】:

标签: python spyder


【解决方案1】:

更新:至少在 Spyder 5.0.3 中,对 sys.exit() 的调用不再杀死内核! (感谢@bhushan 提供的信息!)

对于早期版本,以下内容仍然适用:

要退出脚本,可以

  • 使用raise SystemExit(0) 引发静默异常(无回溯)

  • 或者像raise Exception('my personal exit message')这样的自定义异常

  • 或者将代码封装成一个函数(例如main)并在里面使用return

如果想在脚本中保留对exit() 的调用,可以

  • 切换到“在新的专用 Python 解释器中执行”或

  • 在 IPython 控制台注册退出处理程序:

      def exit_handler(): raise Exception("exit()"), get_ipython().ask_exit = exit_handler
    

【讨论】:

  • 这是问题的答案吗?
  • @Lafada:我还不知道。见code.google.com/p/spyderlib/issues/detail?id=1974
  • 如果这不是答案,请将其放入 cmets 或仅更新现有问题。如果您发布为答案,那么其他人会得到错误的印象。
【解决方案2】:

正如 Robert Pollak 所建议的,Spyderlib Issue 1974 #4 中的评论是一个更好的解决方案。只需定义一个导致异常的函数,如果你想停止在 spyder 中执行脚本,就调用这个函数。

def f(): raise Exception("Found exit()")

【讨论】:

  • 谢谢你,@ollydbg23!我已将您的答案包含在我的答案中。
【解决方案3】:

要在没有警告的情况下中断 Spyder 的执行,可以调用

raise SystemExit(0)

【讨论】:

    【解决方案4】:

    可以使用内置解决方案:

    import sys
    
    sys.exit()
    

    【讨论】:

      【解决方案5】:

      适合我的解决方案: 在安装了 Spyder 5 的 Windows 上。我从 Anaconda PowerShell Prompt 运行 Spyder,所以当 Spyder 停止时,我可以转到 shell 并使用 Ctrl+c 杀死任何进程。

      【讨论】:

      • 问题不在于 Spyder 何时停止,所以这个答案是题外话。
      猜你喜欢
      • 1970-01-01
      • 2023-01-28
      • 1970-01-01
      • 2022-01-27
      • 1970-01-01
      • 2013-08-28
      • 1970-01-01
      • 2013-07-24
      • 2019-07-29
      相关资源
      最近更新 更多