Pipenv同步和Pipenv在Docker环境中安装--system --ignore-pipfile

时间:2018-10-22 05:03:55

标签: python docker pip pipenv

根据pipenv official documentation

  

同步

     

pipenv同步[选项]

     

安装在Pipfile.lock中指定的所有软件包。

     

安装

     

pipenv安装[选项] [软件包] ...

     

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

     

-ignore-pipfile   安装时,请使用Pipfile.lock忽略Pipfile。

可以安全地假设pipenv syncpipenv install --ignore-pipfile是相同的,没有任何隐藏的缺点吗​​?

更多背景 :我使用--system标志将python软件包安装到系统中,因为我不在乎Docker中的隔离环境容器。但是,pipenv sync不能使用--system标志(请参阅github issue),因此我认为pipenv install --system --ignore-pipfile可能是可行的破解方法。

3 个答案:

答案 0 :(得分:3)

您可以在Advanced usage of pipenv

中看到注释
  

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”似乎是唯一可行的选择。