【问题标题】:Is there any way to get the installed modules without version info with pip?有什么方法可以使用 pip 获取没有版本信息的已安装模块?
【发布时间】:2021-01-27 01:27:16
【问题描述】:

我试过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 freeze | awk -F "==" '{ print $1 }' 在 Linux 上。不知道在windows上如何。
  • @wim 感谢您的快速回复,您能解释一下它是如何工作的吗?我也想要一个 Unix 版本的树莓派。
  • -F 是自定义字段分隔符,$1 打印第一个字段。

标签: pip python-packaging python-importlib


【解决方案1】:

对于纯 Python (3.7+) 版本:

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

参考文献

【讨论】:

    【解决方案2】:

    对于 Linux / macOS:

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

    这应该可以在 Windows 上运行:

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

    【讨论】:

      猜你喜欢
      • 2019-01-11
      • 2016-03-03
      • 2013-03-26
      • 2016-08-29
      • 2021-06-07
      • 1970-01-01
      • 2022-07-30
      • 1970-01-01
      • 2011-12-15
      相关资源
      最近更新 更多