有人刚刚问我如何列出用venv
创建的所有虚拟环境。
我只能考虑搜索pyvenv.cfg
个文件以找到它们。像这样:
from pathlib import Path
venv_list = [str(p.parent) for p in Path.home().rglob('pyvenv.cfg')]
这可能包括一些误报。是否有更好的方法列出用venv
创建的所有虚拟环境?
注意:问题是关于venv
的,特别是否 Anaconda,virtualenv等
答案 0 :(得分:4)
在Linux / macOS上,应该可以获取大部分信息
find ~ -d -name "site-packages" 2>/dev/null
寻找家中名为“ site-packages”的目录,在该目录中venv
将其点子安装的内容放入其中。 / dev / null位可减少您无权查看的内容的闲聊。
或者您可以查看特定预期文件的详细信息。例如,activate
具有nondestructive
作为内容。然后,您需要寻找比venv匹配的模式,而不是与蟒蛇匹配的模式。
find ~ -type f -name "activate" -exec egrep -l nondestructive /dev/null {} \; 2>/dev/null
答案 1 :(得分:2)
标准库 venv
不跟踪任何创建的虚拟环境。因此,列出所有文件夹的唯一方法是在您的硬盘驱动器中搜索符合特定条件的文件夹。
PEP 405 很好地列出了文件夹中应包含的内容,以便它成为虚拟环境。这 blog post 也很好地解释了虚拟环境内部的一部分。虚拟环境的定义是
<块引用>最简单形式的 Python 虚拟环境包括 只不过是 Python 二进制文件的副本或符号链接 附带一个 pyvenv.cfg 文件和一个 site-packages 目录。 (PEP 405)
总而言之,您必须在硬盘驱动器中搜索以下文件夹:
pyvenv.cfg
和 home
键*bin/python3
或 bin/python
lib/<python-version>/site-packages/
,其中 <python-version>
是例如 python3.3
。venv
创建,还有 bin/activate
(source)。即使缺少文件夹,文件夹也被视为虚拟环境。 (PEP 405)pyvenv.cfg
和 home
键*Script/python.exe
lib/<python-version>/site-packages/
,其中 <python-version>
是例如 python3.3
。venv
创建,还有 Scripts/activate.bat
和 Scripts/Activate.ps1
(source)。即使缺少这些文件夹,文件夹也被视为虚拟环境。 (PEP 405)pyvenv.cfg
pyvenv.cfg
实际上可以位于 python
可执行文件之上的同一文件夹或一个子文件夹中。属于虚拟环境的 pyvenv.cfg
必须有 home = <home>
行,其中 <home>
是包含用于创建虚拟环境的 Python 可执行文件的目录。 (PEP 405)。