2016-06-07 193 views
1

首先讓我給出一些導致問題的背景信息。 我的Win 8.1筆記本電腦中安裝了兩個版本的Python。最初Py 2.5被設置爲默認值。我的方式做了它是我改名的Python 3.5的python.exepython35.exe和文件 pythonw.exe 作爲pythonw35.exe這似乎已經創建了兩個.dll文件具有相同的名稱,這兩個文件(我不記得是否兩個dll文件出現在重命名之前)併成功將Python 2.7設置爲默認值(即,當我在命令行中輸入命令python,python 2.7 ran時)。最近我需要將Python 3.5設置爲默認值。然後,我繼續以相同的方式重命名Python 2.7版本的文件,並將3.5版本的文件名恢復爲其原始正常格式(即python.exepythonw.exe)。OSError:套接字不再存在(Python空閒錯誤)


這一切的混亂後,我跑在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 
+0

這些DLL不是通過重命名可執行文件而創建的。爲所有用戶安裝時,Python 3.5不再在System32目錄中安裝python35.dll。它總是在python.exe旁邊。每臺計算機安裝現在默認爲「Program Files [(x86)]」,這是程序的首選和安全目錄。 – eryksun

回答

1

,所以我只是再次安裝了Python 3.5.1設置和事情是啓動和運行。

+0

如果有人有任何想法,爲什麼首先發生錯誤,歡迎發佈答案。 – snow

+0

不要重命名可執行文件,因爲.py和.pyw文件(而且應該)與[py.exe和pyw.exe啓動程序](https://docs.python.org/3/using/windows)相關聯。 html#python-launcher-for-windows),它使用註冊表來查找已安裝的解釋器並運行python.exe或pythonw.exe。如果你喜歡,你可以創建名爲「python2.7.exe」和「python3.5.exe」的*副本,並且管理'PATH'來選擇哪個「python.exe」是首選的。或者使用'py.exe'並設置'PY_PYTHON = 2'或'PY_PYTHON = 3'來選擇默認值。運行'py -X [.Y [-32]]'覆蓋默認值。 – eryksun

0

我也面臨同樣的問題。由於將我的文件命名爲「集合」,引發了此錯誤。這意味着,如果您將文件命名爲內置函數,關鍵字,模塊等,則會引發此錯誤。

解決此錯誤的方法是,檢查您是否通過任何內置函數,關鍵字,模塊等創建了任何文件。如果是,則重命名與任何python關鍵字無關的文件名。它將按預期工作。