Python工具Poetry如何知道项目虚拟环境的路径?

我的问题: Python 工具 Poetry 如何知道一个项目的虚拟环境的路径?

说明:当我poetry init在目录中运行时,会创建一个新项目。然后我运行poetry install并创建一个新的虚拟环境。但是,该虚拟环境的路径和散列都没有存储在我预期的中pyproject.tomlpoetry.lock如我预期的那样。当我运行时,Poetry 如何知道虚拟环境的位置poetry env info -p

除了想知道发生了什么之外,我还需要知道这一点,原因有两个:

  • 如何在不中断指向其虚拟环境的链接的情况下移动包含 Poetry 项目的目录?
  • 如何知道 Poetry 的哪些虚拟环境未使用并可以删除?

可能的解决方案:查看 Poetry 的源代码,在我看来,一个文件envs.toml可能包含从文件系统目录到虚拟环境哈希的映射,但在我的 Mac OS 11.1 上我找不到这样的文件。

回答

我深入研究了源代码,现在我可能已经理解了:

  • 相关代码在poetry/utils/env.py方法里面EnvManager.generate_env_name(...)
  • 该代码通过使用项目名称pyproject.toml并添加其父目录的哈希来推断环境的位置pyproject.toml

作为结果:

  • 没有简单的方法可以删除不再使用的环境
  • 另外,如果我想移动诗歌项目的目录,我需要重命名虚拟环境的文件夹并正确替换散列。这应该可行,但最好poetry install再次运行并创建一个新的虚拟环境

以上是Python工具Poetry如何知道项目虚拟环境的路径?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>