Poetry 如何将项目与其虚拟环境关联起来?

Shu*_*eng 2 python python-poetry

Poetry 如何将项目与其虚拟环境关联起来~/.cache/pypoetry/virtualenvs?我在项目内找不到任何链接,例如grep -ie NKJBdMnE .什么也不返回。

poetry env info

Virtualenv
Python:         3.10.11
Implementation: CPython
Path:           /home/lddpro/.cache/pypoetry/virtualenvs/lxxo-NKJBdMnE-py3.10
Executable:     /home/lddpro/.cache/pypoetry/virtualenvs/lxxo-NKJBdMnE-py3.10/bin/python
Valid:          True

System
Platform:   linux
OS:         posix
Python:     3.10.11
Path:       /var/lang
Executable: /var/lang/bin/python3.10
Run Code Online (Sandbox Code Playgroud)

poetry config --list

[lddpro@0a0aecf400ca lddpro-bff]$ poetry config --list
cache-dir = "/home/lddpro/.cache/pypoetry"
experimental.new-installer = true
experimental.system-git-client = false
installer.max-workers = null
installer.no-binary = null
installer.parallel = true
virtualenvs.create = true
virtualenvs.in-project = null
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}/virtualenvs"  # /home/lddpro/.cache/pypoetry/virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
Run Code Online (Sandbox Code Playgroud)

https://python-poetry.org/docs/configuration/

Jak*_*ube 6

虚拟环境的路径是动态生成的。它不存储在任何地方。这 8 个字母NKJBdMnE是您项目工作目录的 SHA256 的一部分。如果将项目移动到不同的目录,poetry 将使用不同的虚拟环境,因为 SHA256 会有所不同。

您可以在源代码中看到使用的确切算法poetryenv.py#L1196-L1204