有没有办法通过pip获得没有版本信息的已安装模块?

问题描述

我尝试了pip freeze。我需要它仅输出用换行符分隔的模块,例如pip freeze,但不包含版本号,因为我正在尝试创建自动升级程序,并且想在{”是没有版本号的模块名称,因为据我所知,如果要升级模块,则不应提供版本号。例如:

pip install --upgrade <module>

代替colorama Flask pywin32 会做什么:

pip freeze

其中“ ”是版本。
我浏览了文档中的colorama==\<version> Flask==\<version> pywin32==\<version> 的pip命令或选项,但没有找到。我在Windows 10上。

解决方法

对于Linux / macOS:

pip freeze | awk -F "==" '{ print $1 }'

这可能在Windows上可以使用:

pip freeze | py -c "for p in __import__('sys').stdin: print(p.split('=')[0])"
,

对于纯Python( 3.7 + )版本:

python -c "import importlib.metadata; print('\n'.join([d.metadata['Name'] for d in importlib.metadata.distributions()]))"

参考