首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么pip有时会选择不兼容的版本?

为什么pip有时会选择不兼容的版本?
EN

Stack Overflow用户
提问于 2020-03-17 18:12:47
回答 1查看 3.2K关注 0票数 0

在我的python包htrest (https://pypi.org/project/htrest/)中,我有以下要求:

代码语言:javascript
复制
requirements = [
    'htheatpump==1.2.1',
    'Flask==1.1.1',
    'flask-restx==0.1.1',
    'Flask-BasicAuth==0.2.0',
    # put package requirements here
]

当我使用pip install htrest安装它时,它有时会失败,其中包含以下消息:

代码语言:javascript
复制
flask-restx 0.1.1 has requirement werkzeug<=0.16.1, but you'll have werkzeug 1.0.0 which is incompatible.

看来pip之所以选择werkzeug==1.0.0是因为Flask (Werkzeug>=0.15)的需求。

代码语言:javascript
复制
Collecting Werkzeug>=0.15 (from Flask==1.1.1->htrest)
  Using cached https://files.pythonhosted.org/packages/ba/a5/d6f8a6e71f15364d35678a4ec8a0186f980b3bd2545f40ad51dd26a87fb1/Werkzeug-1.0.0-py2.py3-none-any.whl

尽管flask-restx需要werkzeug<=0.16.1

另一方面,有时pip会选择合适的werkzeug (0.16.1)版本:

代码语言:javascript
复制
Collecting werkzeug<=0.16.1 (from flask-restx==0.1.1->htrest)
  Using cached https://files.pythonhosted.org/packages/c2/e4/a859d2fe516f466642fa5c6054fd9646271f9da26b0cac0d2f37fc858c8f/Werkzeug-0.16.1-py2.py3-none-any.whl

以适应Flask flask-restx的要求。

有人能解释一下原因以及如何解决这个问题吗?

你好,丹尼尔。

EN

回答 1

Stack Overflow用户

发布于 2020-03-17 18:32:27

默认情况下,pip install <package_name>命令总是查找包的最新版本并安装它。同时,它还搜索包元数据中列出的依赖项的最新版本,并安装这些依赖项,以确保包具有它所需的所有需求。

如果要安装以前的版本,则必须指定此版本。本文详细介绍pip的工作原理。

在你的例子中,你应该这样做:

代码语言:javascript
复制
pip3 uninstall Werkzeug        # uninstalling the current Werkzeug
pip3 install Werkzeug==0.16.1  # install specific version of Werkzeug
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60728023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档