微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当我尝试使用 SublimeREPL 运行 Python 脚本时,Sublime Text 3 显示 EOFError()

如何解决当我尝试使用 SublimeREPL 运行 Python 脚本时,Sublime Text 3 显示 EOFError()

当我尝试从 Sublime Text 3 运行 Python 脚本时,我得到一个弹出对话框,上面只写着“EOFError()”,没有其他内容

我正在使用 SublimeREPL 插件,对我的 C:\Users\Al\AppData\Roaming\Sublime Text 3\Packages\SublimeREPL\config\Python\Main.sublime-menu 文件稍作修改(基于此视频:https://www.youtube.com/watch?v=wM2LbXCkLDI),因此我可以在单独的选项卡中打开一个交互式 shell,该选项卡运行程序。我所做的主要更改是向 Python 解释器添加“-i”命令行参数,以便在脚本完成后运行交互式 shell。

这以前工作得很好。我不确定在我的配置或 Python 或 SublimeREPL 包中发生了什么变化以使其不再工作。

这是我的 Main.sublime-menu 文件

[
     {
        "id": "tools","children":
        [{
            "caption": "SublimeREPL","mnemonic": "R","id": "SublimeREPL","children":
            [
                {"caption": "Python","id": "Python","children":[
                    {"command": "repl_open","caption": "Python","id": "repl_python","mnemonic": "P","args": {
                        "type": "subprocess","encoding": "utf8","cmd": ["python","-i","-u"],"cwd": "$file_path","Syntax": "Packages/Python/Python.tmLanguage","external_id": "python","extend_env": {"PYTHONIOENCODING": "utf-8"}
                        }
                    },{"command": "python_virtualenv_repl","id": "python_virtualenv_repl","caption": "Python - virtualenv"},{"command": "repl_open","caption": "Python - PDB current file","id": "repl_python_pdb","mnemonic": "D","-u","-m","pdb","$file_basename"],"caption": "Python - RUN current file","id": "repl_python_run","caption": "Python - IPython","id": "repl_python_ipython","mnemonic": "I","autocomplete_server": true,"cmd": {
                            "osx": ["python","${packages}/SublimeREPL/config/Python/ipy_repl.py"],"linux": ["python","windows": ["python","${packages}/SublimeREPL/config/Python/ipy_repl.py"]
                        },"extend_env": {
                            "PYTHONIOENCODING": "utf-8","SUBLIMEREPL_EDITOR": "$editor"
                        }
                    }
                    }
                ]}
            ]
        }]
    }
]

更新:当我查看 Sublime Text 控制台时,它在我尝试运行 Python 脚本后显示错误

Traceback (most recent call last):
  File "C:\Users\Al\AppData\Roaming\Sublime Text 3\Packages\SublimeREPL\sublimerepl.py",line 495,in open
    rv = ReplView(view,r,Syntax,repl_restart_args)
  File "C:\Users\Al\AppData\Roaming\Sublime Text 3\Packages\SublimeREPL\sublimerepl.py",line 186,in __init__
    self._history = PersistentHistory(self.external_id)
  File "C:\Users\Al\AppData\Roaming\Sublime Text 3\Packages\SublimeREPL\sublimerepl.py",line 140,in __init__
    self._db.create("external_id","command","ts",mode="open")
  File "C:\Users\Al\AppData\Roaming\Sublime Text 3\Packages\SublimeREPL\repllibs\PyDbLite.py",line 193,in create
    return self.open()
  File "C:\Users\Al\AppData\Roaming\Sublime Text 3\Packages\SublimeREPL\repllibs\PyDbLite.py",line 246,in open
    self.fields = pickle.load(_in)
EOFError
error: EOFError()

我尝试卸载并重新安装 SublimeRepl,然后重新启动 Sublime Text,但我收到相同的错误消息。

我做了一些调试,发现 _inC:\Users\Al\AppData\Roaming\Sublime Text 3\Packages\User\.SublimeREPLHistory\python.db文件对象,一个 819kb 的文件。我尝试删除它(先将其备份到另一个文件夹)并重新启动 Sublime Text。这似乎奏效了!我想以某种方式将一些空字符写入历史文件?它现在有效。感谢 MattDMo 将我指向 Sublime Text 控制台,在那里我可以找到错误消息。

解决方法

我通过删除 C:\Users\Al\AppData\Roaming\Sublime Text 3\Packages\User\.SublimeREPLHistory\python.db(尽管它会根据您的用户名位于不同的文件夹中)并重新启动 Sublime Text 来解决此问题。

我猜想不知何故将一些空字符写入历史文件?它现在有效。感谢 MattDMo 将我指向 Sublime Text 控制台,在那里我可以找到错误消息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。