在虚拟环境中升级pip时触发TypeError报错,请问是什么原因?
问题根因
这个报错是旧版本pip(通常是9.0以下版本)与Python 3.6的路径处理接口不兼容导致的:旧版pip在初始化会话处理缓存目录时,会错误地将整数类型的变量传入路径拼接函数posixpath.join,而Python 3.6及以上版本的os.fspath仅支持字符串、字节或路径类对象,因此触发类型错误。
解决方案
执行操作前请先确保你已经激活了目标虚拟环境。
- 方法一:使用Python内置的ensurepip模块修复pip,这是最稳妥的方案
执行命令:python -m ensurepip --upgrade
执行完成后运行pip -V验证版本是否正常即可。 - 方法二:手动指定缓存目录升级pip
如果方法一不生效,可以在升级时强制指定合法的缓存路径规避参数错误:pip install --upgrade pip --cache-dir ~/.cache/pip
注意事项
不要使用sudo操作虚拟环境内的pip,否则会导致权限混乱,甚至误修改全局Python环境的配置。
内容的提问来源于stack exchange,提问作者batuman
相关产品推荐
相关产品推荐

