我正在一个正在研究的新项目中使用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 ...
跟进每个pipenv update
- 两者似乎都不是特别直观的工作流
我无法在网上找到任何真正阐明此行为的文档或有用答案。这是预期的行为,还是我错过了什么?使用pipenv处理这种情况的“推荐”工作流程是什么?
这似乎与这些pipenv issues中描述的类似/相同的问题。我对older, issue中的回答的解读是,这种行为与预期的一样,并且:
pipenv update
pipenv install new-package
期间更新'无关'包,需要在Pipfile中固定版本从目前对此问题的回答中可以看出,没有立即改变这种行为的计划。