CentOS 6安装cymysql时pip报SyntaxError: invalid syntax怎么办
报错根因
- 触发报错的核心是解释器和pip版本完全不兼容,不存在代码语法写错的问题:
- 你执行
easy_install pip的链路,是通过yum安装的python-setuptools触发的,这个组件默认绑定CentOS6系统自带的Python2.7,最终把pip 21.0版本装到了Python2.7的运行环境中。 - pip从20.3版本之后就彻底放弃了Python2.7支持,pip 21.0的代码里大量使用Python3.6+才支持的f-string语法(就是报错行的
f"ERROR: {exc}"),Python2.7解释器碰到这种语法直接触发SyntaxError,和你日志里的报错完全对应。 - 你当前全局的pip启动脚本第一行的shebang是
#!/usr/bin/python,指向的是系统默认的Python2.7,不是你单独安装的Python3.6.10,所以哪怕你本地有高版本Python,调用pip的时候根本没走到Python3.6的运行链路。
- 你执行
对应解决步骤
如果需要给Python3.6.10安装cymysql
- 先清理错装在Python2.7环境下的损坏pip,避免后续调用冲突:
easy_install -m pip rm -rf /usr/local/lib/python2.7/site-packages/pip-* - 直接通过Python3.6内置的ensurepip组件安装匹配版本的pip,跳过系统自带easy_install的错配链路:
python3.6 -m ensurepip --upgrade - 直接调用Python3.6对应的pip安装cymysql,全程避开全局pip的错配问题:
python3.6 -m pip install cymysql
如果需要给系统自带Python2.7安装cymysql
- 同样先删除当前不兼容Python2.7的pip21.0版本:
easy_install -m pip rm -rf /usr/local/lib/python2.7/site-packages/pip-* - 安装Python2.7最后兼容的pip版本pip 20.3.4,再执行模块安装:
easy_install pip==20.3.4 pip install cymysql
常见踩坑提醒
- 不要直接用CentOS6源里的easy_install装最新版pip,从pip21.0开始所有版本都不支持Python2.7,硬装必报这个语法错误。
- 全局pip的启动脚本shebang是安装时生成的,不会自动适配你后续新装的Python3.6,用
pythonX.X -m pip的调用方式是最稳的,不会出现解释器错配。 - 这次报错里提到的pkg_resources组件属于setuptools的内置模块,默认路径在对应Python版本的site-packages目录下,本次报错和这个文件本身无关,不需要修改它的代码。
内容的提问来源于stack exchange,提问作者Dacman2018
相关产品推荐
相关产品推荐

