【问题标题】:How to install dependencies from a copied pipfile inside a virtual environment?如何从虚拟环境中复制的 pipfile 安装依赖项?
【发布时间】:2019-02-09 19:12:12
【问题描述】:

当我开始克隆一个使用 pipenv 的 git 项目时,问题就出现了,所以它有一个 Pipfile + Pipfile.lock。我想在项目中使用虚拟环境,所以我运行pipenv shell。我现在创建了一个虚拟环境,并且我在虚拟环境中。该项目显然有很多依赖项(列在 Pipfile 中)。我不想一一浏览Pipfile中的列表并使用pipenv install <package_name>安装它们。是否有一个 pipenv/pip 命令可以从我已经拥有的 Pipfile 安装所有软件包?或者我可能需要设置不同于运行pipenv shell 的环境?

【问题讨论】:

    标签: python pip virtualenv pipenv


    【解决方案1】:

    这个问题的正确答案是应该运行pipenv installpipenv install --dev(如果有开发依赖项)。这将安装管道文件中的所有依赖项。将依赖项放入 requirements.txt 中,然后使用 pip 将起作用,但并不是真正必要的。对于大多数人来说,使用 pipenv 的全部意义在于避免需要管理 requirements.txt 或使用 pip。

    编辑:如果 virtualenv 已经被激活,你也可以使用 pipenv syncpipenv sync --dev 来达到同样的效果。

    【讨论】:

    • 嗨,我知道这是旧的,但我有一个 pipenv 虚拟环境在一台计算机上运行良好。我想在另一台计算机上重新创建该虚拟环境。那么我该怎么做呢?您的答案缺乏很多细节。以前我只有一个 requirements.txt,然后将其复制到我想在另一台计算机上设置的新虚拟环境中。那么我现在应该复制哪个文件?我要复制 Pipfile 和 Pipfile.lock 吗?
    • @ChumbiChubaGo 您应该可以在另一台计算机的目录中复制 Pipfile 和 Pipfile.lock 以及 pipenv install。不过,在未来,您可能应该提出一个新问题,而不是碰到一个旧问题。
    【解决方案2】:

    理想情况下,我们鼓励您拥有一个 requirements.txt 文件,其中包含通过 pip 安装所需的所有包。您可以通过以下方式创建此文件:

    pip freeze > requirements.txt
    

    您可以将 Pipfile 和 Pipfile.lock 转换为 requirements.txt。 Take a look into this

    pipenv lock -r
    

    之后,您可以通过执行以下操作在您的 python 虚拟环境中安装所有模块:

    pip install -r requirements.txt
    

    希望我回答了你的问题。

    【讨论】:

    • @CalebSyring 更新/添加新包时,请确保通过pip freeze 文件更新requirements.txt 文件。
    • 好吧,也许这会暴露出我做错了什么,但是 pip freeze 不会返回任何东西。 (我最初以为是,但在我问这个问题之前,它只是我一一安装的一些软件包)现在你知道 pip freeze 不会返回任何东西有什么想法吗?
    • 您能否检查一下您的工作目录中是否创建了requirements.txt 文件?
    • 现在工作目录中没有 requirements.txt。如果您要求的话,我可以通过运行您的代码来创建一个。
    • 感谢转化链接
    【解决方案3】:

    我遇到了类似的问题。对我来说,我退出了 virtualenv 并运行了

    pipenv --three sync
    

    它奏效了。

    据我所知,我的想法是使用 python 3 创建一个新的虚拟环境。如果您使用的是 python 2,则上述命令将被编辑为读取

    pipenv --two
    

    sync 命令将所有依赖项从 Pipfile.lock 复制到新的 virtualenv。

    【讨论】:

    • 你为什么运行这个?它有什么作用?你能解释一下吗?
    • 我已经更新了答案,希望能提供更多细节
    【解决方案4】:

    使用pipenv sync 安装Pipfile.lock 中指定的所有包。

    【讨论】:

      【解决方案5】:

      在文件 Pipfiel 中使用 pipenv 同步


      此代码在文件类型 .lock 中刷新 lib

      pipenv sync
      

      使用这个运行 virtualenv Pipfile

      pipenv shell
      

      【讨论】:

        猜你喜欢
        • 2013-10-26
        • 2022-01-23
        • 2019-05-16
        • 2020-05-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-28
        • 1970-01-01
        • 2012-11-09
        相关资源
        最近更新 更多