升级 pip 过程中踩了个坑。其实之前也升级过不过很巧合绕过去了。这次踩到做个记录。
事情是这样的,我需要写一个爬虫,所以就安装了bs4(喔,漂亮的肥皂)。然后安装后pip提示我新版本出来了。作为一个『不更新不舒服斯基』,我顺手就 pip install --upgrade pip
了。其实它提示的命令是 python -m pip install --upgrade pip
的,但在Scripts加入了系统路径的情况下(比较新的版本,安装的时候自动就帮你添加了), 直接pip 不是一样吗。然后就出现了下面这样的情况。
|
|
翻译一下:
- 因为 pip.exe 正在运行,所以无法将新的pip.exe覆盖上去
- 因为没权限,另外一个错误产生了
- 升级失败想再来一次?不好意思,旧版本已经卸载了,根本找不到
我去,直接蒙圈了,就随手更新一下,直接就把pip弄没了。我还得手动安装一次pip?虽然不难,但折腾啊。
Google一下,发现有人提供issue了:https://github.com/pypa/pip/issues/3804
我把关键的信息搬运一下(大意汇总 + 翻译,不一一对应):
pip.exe 正在运行,所以无法替换对应的文件,与其说是错误,不如说是系统限制。
以系统管理员运行,用 python -m pip install –upgrade pip 更新就可以了。
(pip.exe 实际上指向pip-script.py,然后里面再加载pip模块并运行,实际效果就跟 python -m pip install --upgrade pip
一样。但不一样的是,前者运行锁定了pip.exe,而后者实际上只运行了 python.exe。)
然后什么都没做,这个issue就作为https://github.com/pypa/pip/issues/1299 的 duplicated issue 被 closed了。
有兴趣可以看1299下面的讨论,太长我就不翻了。
还好还有 easy_install,easy_install pip
,恢复正常。
本文为本人原创,采用知识共享 “署名-非商业性使用-相同方式共享” 4.0 (CC BY-NC-SA 4.0)”许可协议进行许可。
本作品可自由复制、传播及基于本作品进行演绎创作。如有以上需要,请留言告知,在文章开头明显位置加上署名(Jayce Chant)、原链接及许可协议信息,并明确指出修改(如有),不得用于商业用途。谢谢合作。
详情请点击查看协议具体内容。