我正在构建一个脚本,用于下载python库,以便稍后在脱机机器上部署。我考虑过使用Pypi APIorcli pip show获取要安装的库的依赖项。
我的问题是"requires_dist"API提供的JSON中的对象列出了比"require: "中列出的更多的依赖项。PIP表演场地。哪一个是正确的需求列表?
下面是django库的一个例子:
通过皮普:py -m pip show django
Name: Django
Version: 4.0.4
Summary: A high-level Python web framework that encourages rapid development and clean, pragmatic design.
Home-page: https://www.djangoproject.com/
Author: Django Software Foundation
Author-email: foundation@djangoproject.com
License: BSD-3-Clause
Location: d:boyananaconda3libsite-packages
Requires: sqlparse, tzdata, asgiref
Required-by:
通过API:https://pypi.org/pypi/django/json
...
"release_url": "https://pypi.org/project/Django/4.2/",
"requires_dist": [
"asgiref (<4,>=3.6.0)",
"sqlparse (>=0.3.1)",
"backports.zoneinfo ; python_version < "3.9"",
"tzdata ; sys_platform == "win32"",
"argon2-cffi (>=19.1.0) ; extra == 'argon2'",
"bcrypt ; extra == 'bcrypt'"
],
"requires_python": ">=3.8",
...
我尝试手动安装几个库,经验证明pip方法似乎是正确的。也就是说,直接解析cmd输出是一种好做法吗?我知道Pypi有时会改变这些。
谢谢你的帮助!
查看输出和您得到的内容,您需要考虑API输出中显示的约束:
"backports.zoneinfo ; python_version < "3.9"",
我假设您使用的是较新版本的python,因此跳过它。下一个是:
"argon2-cffi (>=19.1.0) ; extra == 'argon2'",
"bcrypt ; extra == 'bcrypt'"
这些是额外的依赖项,这意味着它们不会被安装,除非你在安装过程中明确要求。不幸的是,由于一个bug,即使你安装了所有额外的,如pip install django[bcrypt,argon2]
,它们也不会显示。