【问题标题】:How to create a brand new virtual environment or duplicate an existing one in poetry? (Multiple environment in a project)如何在诗歌中创造一个全新的虚拟环境或复制现有的虚拟环境? (一个项目中的多个环境)
【发布时间】:2022-01-17 10:28:52
【问题描述】:

我有一个项目和一个用诗歌创建的现有虚拟环境(poetry install/init)。 因此,据我所知,虚拟环境的目的是避免修改系统基础环境和隔离的可能性(每个项目、每个开发、每个系统等......)。

我怎样才能为我的诗歌项目创造另一个全新的环境?我如何最终复制和使用现有的?

我的意思是当前的(激活的)不应该参与这个(除了最终复制它),因为我想测试另一组依赖和代码。

我知道这一点:

【问题讨论】:

  • 对于相同的项目你想创建一个不同的环境吗?为什么?如果你想尝试不同的依赖关系,那么add/remove根据需要它们,这些都记录在poetry.lock中。当您对新的依赖项感到满意时,将它们提交给版本控制。如果您不满意并想回滚,请使用版本控制和poetry install 再次回滚锁定文件。基本上,锁文件代表你的环境;幕后创建的实际环境有些无关紧要和一次性。
  • 嗨,deceze。我想修改一个或多个依赖项(不同版本)并尝试它是如何工作的,而不会丢失我的原始环境。添加和删​​除不适合这个。更新可以做到,但我不想改变原来实际工作的环境。
  • 诗歌的意义在于它可以(据说)总是完全从一个锁定文件重新创建一个精确的工作环境。只要您保持该锁定文件完好无损(最好通过版本控制),就不必担心添加或删除。
  • @deceze 在构建代理上,“globale”venvs 可能在我不想使用或污染的地方。
  • 为什么不直接将存储库克隆到不同的文件夹中,然后您可以在全新的诗歌虚拟环境中试用不同的依赖项。

标签: python virtualenv python-poetry


【解决方案1】:

诗歌似乎每个 python 解释器绑定到一个 virtualenv。 诗歌也绑定到pyproject.toml文件及其路径生成新环境。

所以有两个棘手的解决方案:

1 - 在 pyproject.toml 中更改您的部门并使用另一个 python 版本(例如使用 pyenv 安装),然后:

poetry env use X.Y

诗歌会创建一个新的虚拟环境,但这与仅更改一些项目部门并不完全相同。

2 - 使用另一个路径中的另一个 pyproject.toml

mkdir env_test
cp pyproject.toml env_test/pyproject.toml
cd env_test
nano pyproject.toml # edit your dependencies
poetry install # creates a brand new virtual environment
poetry shell
# run your script with the new environment

这将生成一个新环境,其中仅更改了所要求的依赖项。两种环境可以同时使用。 经过测试,最终还是可以用 env 命令删除新环境的。

【讨论】:

    猜你喜欢
    • 2019-09-24
    • 1970-01-01
    • 2022-10-08
    • 2020-09-03
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 2017-12-19
    • 2017-03-14
    相关资源
    最近更新 更多