【问题标题】:OSError: socket no longer exists (Python IDLE error)OSError:套接字不再存在(Python IDLE 错误)
【发布时间】:2016-10-07 21:06:11
【问题描述】:

首先让我提供一些导致问题的背景信息。 我的 Win 8.1 笔记本电脑中安装了两个版本的 python。最初 Py 2.5 被设置为默认值。我这样做的方式是将 Python 3.5 的 python.exe 重命名为 python35.exe 和文件 pythonw.exe 作为pythonw35.exe,它似乎创建了两个与两个文件同名的.dll文件(我不记得在重命名之前这两个dll文件是否存在)并成功将Python 2.7设置为默认值(即当我在命令行中输入命令python 时,python 2.7 运行)。最近我需要将 Python 3.5 设置为默认值。然后我继续以相同的方式重命名版本 Python 2.7 的文件,并将 3.5 版本的文件名恢复为其原始的正常格式(即python.exepythonw.exe)。


在所有这些混乱之后,我在 IDLE 中运行 print("Hello World") 并出现以下错误:

IDLE internal error in runcode()
Traceback (most recent call last):
  File "C:\Python35-32\lib\idlelib\rpc.py", line 339, in putmessage
    r, w, x = select.select([], [self.sock], [])
TypeError: argument must be an int, or have a fileno() method.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python35-32\lib\idlelib\rpc.py", line 240, in asyncqueue
    self.putmessage((seq, request))
  File "C:\Python35-32\lib\idlelib\rpc.py", line 342, in putmessage
    raise OSError("socket no longer exists")
OSError: socket no longer exists

【问题讨论】:

  • DLL 不是通过重命名可执行文件创建的。 Python 3.5 在为所有用户安装时不再在 System32 目录中安装 python35.dll。它总是在 python.exe 旁边。现在,每台机器的安装也默认为“Program Files [(x86)]”,这是程序的首选和安全目录。

标签: python windows python-2.7 python-3.5


【解决方案1】:

我也遇到了同样的问题。由于将我的文件命名为“集合”而引发了此错误。这意味着如果您将文件命名为任何内置函数、关键字、模块等,则会引发此错误。

这个错误的解决方法是,检查你是否通过任何内置函数、关键字、模块等创建了任何文件。如果是,则重命名与任何 python 关键字无关的文件名。它将按预期工作。

【讨论】:

    【解决方案2】:

    所以我刚刚再次安装了 python 3.5.1 设置,一切正常运行。

    【讨论】:

    • 如果有人对错误发生的原因有任何想法,欢迎发布答案。
    • 不要重命名可执行文件,因为 .py 和 .pyw 文件已(并且应该)与 py.exe and pyw.exe launchers 相关联,它们使用注册表查找已安装的解释器并运行 python.exe 或 pythonw。 EXE文件。如果您愿意,您可以使用“python2.7.exe”和“python3.5.exe”等名称创建副本,并管理PATH 以选择首选的“python.exe”。或者只使用py.exe 并设置PY_PYTHON=2PY_PYTHON=3 以选择默认值。运行 py -X[.Y[-32]] 覆盖默认值。
    【解决方案3】:

    如果上述解决方案都不起作用,简单的重启可能会解决问题。您可以重新启动 Python shell 或您的设备。如果问题仍然存在,我建议重新安装 python。

    【讨论】:

      猜你喜欢
      • 2020-01-21
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 2014-03-30
      • 2017-04-03
      • 2021-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多