根据pipenv官方留档:
同步
Pipenv同步[选项]
安装Pipfile中指定的所有包。锁
安装
Pipenv安装[选项][包]...
安装提供的包并将其添加到Pipfile,或者(如果没有提供包),从Pipfile安装所有包。
--忽略pipfile安装时使用pipfile忽略pipfile。锁
假设pipenv sync
和pipenv安装--ignore pipfile
是相同的,没有任何隐藏的缺点,这样安全吗?
更多背景:我使用--system标志将python包安装到系统,因为我不关心docker容器中的独立环境。但是--system标志对于pipenv sync
是不可用的(参见github问题),所以我认为pipenv安装--system--忽略-pifile
可能是一个可行的黑客。
您可以在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
用于我的开发虚拟环境)。
你的“黑客”在我看来是目前唯一可行的选择。