提问者:小点点

pipenv同步和pipenv安装--系统--忽略docker环境中的pipfile


根据pipenv官方留档:

同步

Pipenv同步[选项]

安装Pipfile中指定的所有包。锁

安装

Pipenv安装[选项][包]...

安装提供的包并将其添加到Pipfile,或者(如果没有提供包),从Pipfile安装所有包。

--忽略pipfile安装时使用pipfile忽略pipfile。锁

假设pipenv syncpipenv安装--ignore pipfile是相同的,没有任何隐藏的缺点,这样安全吗?

更多背景:我使用--system标志将python包安装到系统,因为我不关心docker容器中的独立环境。但是--system标志对于pipenv sync是不可用的(参见github问题),所以我认为pipenv安装--system--忽略-pifile可能是一个可行的黑客。


共3个答案

匿名用户

您可以在pipenv的高级用法中看到注释

pipenv安装--ignore pipfile几乎等同于pipenv sync,但是pipenv sync将永远不会尝试重新锁定依赖项,因为它被视为原子操作<代码>pipenv安装默认情况下不会尝试重新锁定,除非使用--deploy标志。

因此,也许pipenv安装--忽略pipfile--部署等于pipenv同步

匿名用户

不是一个真正的答案(我也有兴趣确认),但不管怎样,我们一直在使用

pipenv install --system --deploy --ignore-pipfile

在我们的Dockerfile中取得了良好的效果。

匿名用户

不确定它是否是在你发布这个问题后添加的,但文档确实解决了这个问题(尽管,公平地说,它有点“嗯?”对我的解释类型…)

FWIW,我相信sync也应该有--system标志(我试图解决与您相同的问题,构建容器,不想维护两个独立的文件:requirements.txt用于容器的系统Python,而Pipfile用于我的开发虚拟环境)。

你的“黑客”在我看来是目前唯一可行的选择。