gpt4 book ai didi

python - 从 pyenv-virtualenv 切换到 pipelinev 时保持相同的共享 virtualenv

转载 作者:行者123 更新时间:2023-12-01 07:57:25 37 4
gpt4 key购买 nike

我开始查看pipenv看起来还不错。我唯一担心的是,我的大部分项目都涉及 numpy , scipy和其他一些不那么小的图书馆。

当前管理项目的方式:我有pyenvpyenv-virtualenv安装。我有一些(目前是 4 个)具体的 virtualenvs每个项目都迎合一种类型的项目。项目本身有.pyenv-version设置,我有pyenv的自动加载virtualenv功能已启用。如果我需要共享一个项目,我会生成一个 requirements.txtpip freeze -l来自virtualenv .

所以在我当前的设置中,我有 X项目数量和 Y, Y << X数量virtualenvs ,总共需要几 GB 的硬盘空间。请注意,由于像 numpy 这样的大型库virtualenvs 中的每个相当大,大约 700-900 MB。

我的问题:

据我了解,pipenv默认情况下会创建一个 virtualenv对于我的所有项目,因此我的 virtualenvs 占用的硬盘空间会大幅增加。我感兴趣的是:

  • 可以分享 pipenv跨多个项目的环境使用完全相同相同的依赖项?即多个 pipenv加载相同的配置 virtualenv
  • 如果没有,是否可以生成 pipenv来自 virtualenv 的配置文件我设置了pyenv ?即我不会使用 pipenv为了实际运行我的项目,我不会创建任何 virtualenvspipenv ,但我会创建 pipenv用于共享项目的配置文件(在本例中,也可能与 requirements.txt 一起)。

编辑:我重写了大部分问题以使其更清晰。

最佳答案

pipenv 似乎不太适合您的特定工作流程,因为它以项目为中心,而不是以环境为中心。 pipenv将虚拟环境视为不稳定的环境,并保留在情况需要时自由更改其的权利。 您可以使用它,但在环境发生变化的情况下,由于 pipenv 的审查更加严格,保持所有项目同步将是一件很痛苦的事情。

可以显式指定pipenv用于项目的虚拟环境by creating a .venv file in the project root with a path to it (通常,virtualenvs 是在特定位置创建的,具有自动生成的名称,其中包含项目路径的哈希值)。这似乎没有记录。

但是,pipenvvirtualenv 不同,它会检查并强制虚拟环境具有满足 Pipfile 和生成的 Pipfile.lock 中指定的确切“上次测试的配置”。

因此,如果您更改环境中的任何软件包版本,您需要:

  • 更新受影响项目中的所有 Pipfile.lock(例如复制更改的项目)。使用生成的 Pipfile,您可以删除它们。
  • 如果发生更改,请将受影响项目中的所有 Pipfile 更新为新的软件包版本(例如,复制更改的版本)

关于python - 从 pyenv-virtualenv 切换到 pipelinev 时保持相同的共享 virtualenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55892572/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com