有没有办法用pip获取没有版本信息的已安装模块?

问题描述 投票:0回答:2

我尝试过

pip freeze
。我需要它只输出由换行符分隔的模块,例如
pip freeze
,但没有版本号,因为我正在尝试创建一个自动升级程序,并且想要执行
pip install --upgrade <module>
,其中“”是模块的名称没有版本号,因为据我所知,如果您尝试升级模块,则不应该提供版本号。例如:

colorama  
Flask  
pywin32    

而不是

pip freeze
会做什么:

colorama==\<version>  
Flask==\<version>  
pywin32==\<version>    

其中“”是版本。
我查看了

pip freeze
的 pip 命令或选项的文档,但没有找到。我使用的是 Windows 10。

pip python-packaging python-importlib
2个回答
3
投票

对于 Linux / macOS:

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

-F
用于指定自定义字段分隔符,
$1
打印第一个字段。


对于 Windows,

awk
可能不可用:

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

3
投票

对于纯Python(3.7+)版本:

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

参考文献

© www.soinside.com 2019 - 2024. All rights reserved.