读取Excel脚本突发Missing parentheses in call to 'print'错误及文件定位求助
错误成因与文件定位方案
一、错误成因
这个报错的核心是Python版本兼容问题:
- Python 2里
print是语句,写print "内容"就合法;但Python 3里print是内置函数,必须加括号写成print("内容")。 - 之前脚本运行正常,要么是本地Python环境从2切换到了3,要么是用到的Excel读取依赖库(比如xlrd、openpyxl、pandas依赖的库等)出现更新/损坏,导致其内部的
__init__.py文件里存在Python 2风格的print语句,在Python 3环境下执行触发语法错误。 - 你项目目录里的
__init__.py行数不够,说明报错的不是你自己写的文件,而是第三方依赖库里的__init__.py。
二、定位目标__init__.py的方法
利用模块属性直接查找
找到脚本里用来读Excel的库(比如import xlrd就找xlrd),在脚本开头或者命令行执行:import xlrd # 替换成你实际用的Excel库 print(xlrd.__file__)输出的路径就是该库的
__init__.py所在位置,打开文件跳转到1187行就能看到问题代码。查看完整报错栈
如果能拿到完整的报错回溯信息(Traceback),里面会显示报错文件的完整绝对路径,直接复制路径打开即可。从虚拟环境/全局site-packages查找
- 用了虚拟环境的话,去虚拟环境目录下的
Lib/site-packages文件夹里,找到对应的Excel依赖库文件夹,里面的__init__.py就是目标文件。 - 全局环境的话,Windows一般在
C:\PythonXX\Lib\site-packages,Linux/macOS在/usr/local/lib/pythonX.X/site-packages或者~/.local/lib/pythonX.X/site-packages里。
- 用了虚拟环境的话,去虚拟环境目录下的
用sys.path排查
在脚本开头加入代码打印Python的模块搜索路径,依赖库肯定在这些路径里:import sys print(sys.path)逐个路径找对应的依赖库文件夹即可。
内容的提问来源于stack exchange,提问作者chunming huang
相关产品推荐
相关产品推荐

