首先让我提供一些导致该问题的背景信息。
我的 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.exe
和 pythonw.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
最佳答案
我也遇到了同样的问题。由于将我的文件命名为“集合”而引发此错误。这意味着如果您将文件命名为任何内置函数、关键字、模块等,则会引发此错误。
此错误的解决方案是,检查您是否通过任何内置函数、关键字、模块等创建了任何文件。如果是,则重命名与任何 python 关键字无关的文件名。它将按预期工作。
关于python - 操作系统错误 : socket no longer exists (Python IDLE error),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37688228/