【问题标题】:Pipenv & lock file - depolymentPipenv & 锁定文件 - 部署
【发布时间】:2019-11-07 07:24:38
【问题描述】:

我刚刚开始使用 PIPENV,我发现它很棒,因为我以前从未使用过虚拟环境。但是,我仍然对 PIPENV 文件和锁定文件感到困惑。我通过视频了解到,这两个文件对于 PIPENV 都是必不可少的。

我对这两个文件有两个问题:

1) 如果我希望将它部署在我朋友的笔记本电脑上(让他作为最终用户),我需要将这两个文件中的哪一个传递给他,它们的目的是什么?

2) 如果我想将它部署在需要开发库的其他朋友的笔记本电脑上(让他作为我的项目合作伙伴),我需要将这两个文件中的哪一个传递给他,它们的目的是什么?

3) “冻结”和“锁定”有什么区别?

提前致谢!

【问题讨论】:

    标签: python python-3.x pip pipenv


    【解决方案1】:

    Pipfile 是描述您的应用程序直接需要哪些依赖项的文件。

    Pipfile.lock 是从 Pipfile 生成的,它描述了为使您的应用程序工作需要安装的所有内容,即您的直接依赖项、它们的依赖项等。

    回答您的问题 1 和 2,您应该在两种情况下都发送 PipfilePipfile.lock

    但是,安装过程会略有不同。

    最终用户需要使用pipenv install --deploy 安装依赖项,以确保Pipfile.lock 是最新的——如果锁定文件过期,安装将失败。

    您项目的其他开发人员可能会使用纯 pipenv install 安装依赖项。如果Pipfile.lock 过期,安装时会重新生成。


    回答您的问题 3:freezepip 命令,而不是 pipenv 命令。

    pip freeze 以文本格式打印虚拟环境的当前内容,其输出通常保存在名为requirements.txt 的文件中。如果您的虚拟环境因某种原因已过时,其内容仍将按原样输出。

    pipenv lock 构建并输出项目的依赖列表,无论它们当前是否已安装。它会生成名为 Pipfile.lock 的锁定文件,以便进一步与 pipenv 一起使用。

    【讨论】:

    • 感谢您的详细回复。我仍然很困惑,当两种情况都将重新生成或构建新的锁定文件时,为什么我们需要传输锁定文件。
    • 第一个场景不会重新生成锁文件,如果丢失或过期,它将失败。如果需要,第二种情况确实会重新生成锁定文件,但我还是建议您传递它,因为它允许您确保在您和您的合作伙伴的计算机上的依赖关系是相同的。
    猜你喜欢
    • 1970-01-01
    • 2019-12-05
    • 2018-07-12
    • 2022-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多