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

时间:2017-12-13 05:27:37

标签: python pipenv

我在一个正在研究的新项目中使用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处理这种情况的工作流程?

1 个答案:

答案 0 :(得分:1)

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

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

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