之前一直使用的一个方法,可以不通过其他工具软件,一键升级所有的pip安装包,使用起来比较方便。但是不知道在哪个版本的pip中,'get_installed_distributions'这个函数被替代了,所以会导致报错。
原来使用的代码如下:
# *_* coding : UTF-8 *_*
# 开发人员 : CZW
# 开发时间 : 20/2/20 14:52
# 文件名称 : updatePip.py
# 主要功能 : 批量升级pip 已安装模块版本到最新
import pip
from subprocess import call
from pip._internal.utils.misc import get_installed_distributions
for dist in pip.get_installed_distributions():
call("pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade " + dist.project_name, shell=True)
print('所有库文件版本更新完成!')
# 此处使用清华源进行安装
原来是直接运行这个脚本,就可以一键升级所有的pip包到最新版本。现在我的pip版本是23.0.1版本了,运行的时候直接报错了,错误信息如下:
(venv) PS D:workssanic_w01> py UpdatePip.py
Traceback (most recent call last):
File "D:workssanic_w01UpdatePip.py", line 10, in
from pip._internal.utils.misc import get_installed_distributions
ImportError: cannot import name 'get_installed_distributions' from 'pip._internal.utils.misc'
(D:workssanic_w01venvLibsite-packagespip_internalutilsmisc.py)
主要原因就是:通过 pip._internal.utils.misc 引入 get_installed_distributions 函数的时候错误,起始就是‘get_installed_distributions’这个函数不存在了,网上百度了一大圈,给出的解决方案都是把pip给降级,降级之后就可以运行了。
但是既然我都想把所有包升级到最新版本的,又怎么能够忍受pip使用旧版本呢!
于是各种查阅,包括翻看源码,肯定是更换了位置或者有新的函数名称代替了get_installed_distributions这个函数。经过一番查找,发现:
再pip 23.0.1版本中,get_installed_distributions模块被移除了,取而代之的是pkg_resources模块中的working_set属性。
使用举例:
# 可以使用以下代码来获取当前系统上安装的模块列表
import pkg_resources
installed_packages = [d for d in pkg_resources.working_set]
如果您想要获取指定模块的版本信息,可以使用以下代码:
import pkg_resources
version = pkg_resources.get_distribution("your_package_name").version
有了这些信息就有了上面遇到问题的解决方案,通过pkg_resources函数来重写一开始的升级pip的脚本:
# *_* coding : UTF-8 *_*
# 开发人员 : CZW
# 开发时间 : 2023/03/21 11:30
# 文件名称 : updatePip.py
# 程序版本 : V2.0
# 主要功能 : 批量升级pip 已安装模块版本到最新
import pip
import pkg_resources
from subprocess import call
for d in pkg_resources.working_set:
call("pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade " + d.project_name, shell=True)
print('所有库文件版本更新完成!')
# 这里使用的是清华源进行安装,能够保证速度,也可以根据需要更换其他源
# 由于代码比较简单,也没有定义函数或者类的,没有使用日志记录等,
# 就采用就简单的print做一个指示,可以genuine需要做其他变化,或者美化
通过变更pkg_resources.working_set这个函数可以完美解决get_installed_distributions的错误。
ImportError: cannot import name 'get_installed_distributions' from 'pip._internal.utils.misc'
页面更新:2024-03-29
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号