Pipfile.lock版本不匹配已安装的软件包版本

问题描述 投票:1回答:1

我正在一个正在研究的新项目中使用pipenv。最初的pipenv install是Django,Pipfile显示:

[packages]

django = "*"

和Pipfile.lock显示:

"version": "==1.11.7"

pipenv graphpip list(来自pipenv virtualenv)都显示安装了Django版本1.11.7

但是,当我执行后续的pipenv install new-package时,Pipfile.lock会更新为显示:

"version": "==2.0"

对于Django,尽管pipenv graphpip list都表明版本1.11.7仍在本地安装。这显然会导致问题,因为本地Django版本与基于Pipfile.lock在新环境中安装的版本不同。

似乎pipenv install new_package正在更新已经安装的指定版本的软件包,而没有将这些软件包更新到最新版本 - 这似乎与我违反直觉。据我所知,保持Pipfile.lock与本地环境同步的唯一方法是在Pipfile中固定所有软件包版本,或者用pipenv install ...跟进每个pipenv update - 两者似乎都不是特别直观的工作流

我无法在网上找到任何真正阐明此行为的文档或有用答案。这是预期的行为,还是我错过了什么?使用pipenv处理这种情况的“推荐”工作流程是什么?

python pipenv
1个回答
1
投票

这似乎与这些pipenv issues中描述的类似/相同的问题。我对older, issue中的回答的解读是,这种行为与预期的一样,并且:

  • 为了使pipenv生成的环境与Pipfile.lock内容保持同步,将需要调用pipenv update
  • 为了防止在pipenv install new-package期间更新'无关'包,需要在Pipfile中固定版本

从目前对此问题的回答中可以看出,没有立即改变这种行为的计划。

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