1

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

[packages]

django = "*"

Pipfile.lock显示:

"version": "==1.11.7"

pipenv graph并且pip list(从 pipenv virtualenv 中)都显示安装了 Django 版本 1.11.7

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

"version": "==2.0"

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

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

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

4

1 回答 1

1

这似乎与这些pipenv 问题中描述的问题相似/相同。我对旧问题中的响应的阅读是,这种行为是预期的,并且:

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

从目前对该问题的回应来看,似乎没有立即计划改变这种行为。

于 2017-12-21T01:30:49.787 回答