运行Python脚本时遭遇SyntaxError错误求助(Linux Mint环境)
问题解决:Python3导入pyautogui时的SyntaxError错误
错误根源
你的问题并非pyautogui库或虚拟环境导致,而是当前目录下存在名为socket.py的自定义文件,该文件使用了Python2的异常语法,干扰了Python对标准库socket模块的正常导入。
从报错栈可以明确看到:当代码执行到import socket时,Python优先加载了你本地/home/user/socket.py文件,而非系统标准库的socket模块。该文件第6行的except socket.error, e:是Python2的写法,Python3要求必须使用except socket.error as e:的格式,因此触发SyntaxError。
解决步骤
- 找到当前目录下的
socket.py文件,将其重命名(比如改为my_socket_utils.py)或直接删除,避免与标准库模块名冲突。 - 若目录下存在
socket.pyc字节码缓存文件,一并删除。 - 重新运行你的鼠标移动脚本即可。
附用户提供的报错信息
Traceback (most recent call last): File "/home/user/move_mouse_every_minute.py", line 1, in <module> import pyautogui File "/home/user/.local/lib/python3.10/site-packages/pyautogui/__init__.py", line 246, in <module> import mouseinfo File "/home/user/.local/lib/python3.10/site-packages/mouseinfo/__init__.py", line 207, in <module> from Xlib.display import Display File "/home/user/.local/lib/python3.10/site-packages/Xlib/display.py", line 26, in <module> from Xlib.protocol import display, request, event, rq File "/home/user/.local/lib/python3.10/site-packages/Xlib/protocol/display.py", line 24, in <module> import socket File "/home/user/socket.py", line 6 except socket.error, e: ^^^^^^^^^^^^^^^ SyntaxError: multiple exception types must be parenthesized Error in sys.excepthook: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 72, in apport_excepthook from apport.fileutils import likely_packaged, get_recent_crashes File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module> from apport.report import Report File "/usr/lib/python3/dist-packages/apport/report.py", line 21, in <module> from urllib.request import urlopen File "/usr/lib/python3.10/urllib/request.py", line 88, in <module> import http.client File "/usr/lib/python3.10/http/client.py", line 71, in <module> import email.parser File "/usr/lib/python3.10/email/parser.py", line 12, in <module> from email.feedparser import FeedParser, BytesFeedParser File "/usr/lib/python3.10/email/feedparser.py", line 27, in <module> from email._policybase import compat32 File "/usr/lib/python3.10/email/_policybase.py", line 9, in <module> from email.utils import _has_surrogates File "/usr/lib/python3.10/email/utils.py", line 29, in <module> import socket File "/home/user/socket.py", line 6 except socket.error, e: ^^^^^^^^^^^^^^^ SyntaxError: multiple exception types must be parenthesized Original exception was: Traceback (most recent call last): File "/home/user/move_mouse_every_minute.py", line 1, in <module> import pyautogui File "/home/user/.local/lib/python3.10/site-packages/pyautogui/__init__.py", line 246, in <module> import mouseinfo File "/home/user/.local/lib/python3.10/site-packages/mouseinfo/__init__.py", line 207, in <module> from Xlib.display import Display File "/home/user/.local/lib/python3.10/site-packages/Xlib/display.py", line 26, in <module> from Xlib.protocol import display, request, event, rq File "/home/user/.local/lib/python3.10/site-packages/Xlib/protocol/display.py", line 24, in <module> import socket File "/home/user/socket.py", line 6 except socket.error, e: ^^^^^^^^^^^^^^^ SyntaxError: multiple exception types must be parenthesized
用户运行的脚本代码
import pyautogui import time while True: for i in range(0,100): pyautogui.moveTo(1000,i*10) time.sleep(5)
虚拟环境下的报错信息
Traceback (most recent call last): File ".../move_mouse_every_minute.py", line 1, in <module> import pyautogui File ".../site-packages/pyautogui/__init__.py", line 246, in <module> import mouseinfo File ".../site-packages/mouseinfo/__init__.py", line 207, in <module> from Xlib.display import Display File ".../site-packages/Xlib/display.py", line 26, in <module> from Xlib.protocol import display, request, event, rq File ".../site-packages/Xlib/protocol/display.py", line 24, in <module> import socket File ".../socket.py", line 6 except socket.error, e: ^^^^^^^^^^^^^^^ SyntaxError: multiple exception types must be parenthesized
内容的提问来源于stack exchange,提问作者hobbyist
相关产品推荐
相关产品推荐

