python版本依赖查询工具

pip跟npm一样,一个安装命令下,会安装好些个依赖包。我们通过如下命令可以查询所有安装包的版本:

pip list

还能指定某个相对路径,查询依赖包的版本:

pip list --path ./lib

还能将当前的版本列表导出到文件:

pip freeze --path ./lib > requirement.txt

但这些都不足以解决我们真实面对的问题,即版本冲突问题。pip会告诉我们版本发生冲突了,但是它并不会告诉我们到底我是因为安装了哪些包导致的冲突,即包依赖树的根是谁。

解决版本冲突的大杀器就是pipdeptree,它能以树状结构列表冲突原因是什么,安装很容易:

pip install pipdeptree

列出整个安装包依赖树为:

pipdeptree -a

查询具体某个包的依赖树为:

pipdeptree --packages apache-airflow

查询结果列出了版本要求,以及当前安装的版本,部分结果如下:

apache-airflow==2.2.3
  - alembic [required: >=1.5.1,<2.0, installed: 1.5.8]
    - Mako [required: Any, installed: 1.1.4]
      - MarkupSafe [required: >=0.9.2, installed: 2.0.1]
    - python-dateutil [required: Any, installed: 2.8.2]
      - six [required: >=1.5, installed: 1.16.0]
    - python-editor [required: >=0.3, installed: 1.0.4]
    - SQLAlchemy [required: >=1.3.0, installed: 1.3.24]
  - apache-airflow-providers-ftp [required: Any, installed: 1.0.1]
  - apache-airflow-providers-http [required: Any, installed: 1.1.1]
  - apache-airflow-providers-imap [required: Any, installed: 1.0.1]
...

pipdeptree不支持--path参数,所以如果要添加特定的搜索路径,就需要:

export PYTHONPATH=`pwd`/lib/:$PYTHONPATH

同时,输出结果可以生成不同格式的图片,或者json格式。

发表于 2022年02月08日 18:14   评论:0   阅读:1183  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo