根据pipenv official documentation:
同步
pipenv同步[选项]
安装在Pipfile.lock中指定的所有软件包。
安装
pipenv安装[选项] [软件包] ...
安装提供的软件包并将其添加到Pipfile,或者(如果未提供软件包)从Pipfile安装所有软件包。
-ignore-pipfile 安装时,请使用Pipfile.lock忽略Pipfile。
可以安全地假设pipenv sync
和pipenv install --ignore-pipfile
是相同的,没有任何隐藏的缺点吗?
更多背景 :我使用--system标志将python软件包安装到系统中,因为我不在乎Docker中的隔离环境容器。但是,pipenv sync
不能使用--system标志(请参阅github issue),因此我认为pipenv install --system --ignore-pipfile
可能是可行的破解方法。
答案 0 :(得分:3)
pipenv install --ignore-pipfile
几乎等同于pipenv sync
,但是pipenv sync
绝不会尝试重新锁定您的依赖项,因为它被视为原子操作。默认情况下,pipenv install
会尝试重新锁定,除非使用--deploy
标志。
所以也许pipenv install --ignore-pipfile --deploy
等于pipenv sync
答案 1 :(得分:1)
不是一个真正的答案(我也会对确认感兴趣),但是对于它的价值,我们一直在使用
pipenv install --system --deploy --ignore-pipfile
在我们的Dockerfile中,效果很好。
答案 2 :(得分:0)
不确定在您发布此问题后是否添加了该问题,但是the documentation确实解决了这个问题(尽管公平地说,对我来说有点“呃?”类型的解释...)
FWIW,我相信sync
也应该带有--system
标志(我正在尝试解决与您相同的问题,即构建容器,并且不想维护两个个单独的文件:requirements.txt
用于容器的系统Python,Pipfile
用于我的dev虚拟环境。
在我看来,您的“ hack”似乎是唯一可行的选择。