Python虚拟环境(venv):在使用和开发/测试venv中共享库

Python虚拟环境(venv):在使用和开发/测试venv中共享库,python,virtualenv,Python,Virtualenv,我是python venv的新手,所以很抱歉可能会有一个愚蠢的问题 我正在开发一个小图书馆。我已经用库使用所需的所有包创建了dev虚拟环境,并将所有版本的需求冻结到requirements.txt 我还想用开发和测试所需的所有包创建requirements_test.txt。因此,用户将从requirements.txt安装需求,而开发者将从requirements_test.txt安装所有Nessery libs(例如pytest、asv、sphinx) 现在我已经创建了dev-venv,现在

我是python venv的新手,所以很抱歉可能会有一个愚蠢的问题

我正在开发一个小图书馆。我已经用库使用所需的所有包创建了dev虚拟环境,并将所有版本的需求冻结到requirements.txt

我还想用开发和测试所需的所有包创建requirements_test.txt。因此,用户将从requirements.txt安装需求,而开发者将从requirements_test.txt安装所有Nessery libs(例如pytest、asv、sphinx)


现在我已经创建了dev-venv,现在我想创建test-venv,当然我不想两次安装相同的libs。是否可以从一个venv到另一个venv共享一些LIB?

我认为建议在同一台机器上拥有多个venv和多个环境。那就再喝一杯吧。在两个VENV中都有相同的库是可以的。

即使在虚拟环境中,也有许多与python一起预装的库,并且在您开发的包中不是必需的,当我在全新的虚拟环境中运行
pip freeze
时,它会转储30个包,当然,我的项目不需要它们

我建议您手动执行依赖项维护(至少是生产维护),这样您就不会包含无用的库,并且可以保持依赖项文件的干净

从一个venv到另一个venv是否可以共享一些LIB

不可以。每个虚拟环境将安装一次相同的库(或应用程序),安装不能在环境之间共享。像这样的天气非常好。这就是虚拟环境的全部要点,同一个库中的两个安装相互隔离,特别是在两个不同的项目需要同一个库的两个不同版本的情况下

公平地说,有几种方法可以在两个虚拟环境之间共享同一个库的一个安装,以及这样做的原因。我知道的一个著名的例子是(版本20+)的较新版本。简而言之:此工具创建虚拟环境,并且(在特定条件下)能够在多个环境中重用(共享)pip、setuptools和wheel的安装,请参阅

关于该主题的更多讨论:


我很好奇:“在一个全新的虚拟环境中,它会转储30个包”,这怎么可能?您好。谢谢你的回答。在我的新用法venv中没有任何软件包。通过冻结包裹,您可以保护自己免受丢失的需求。稍后,您可以删除一些行,例如,如果您使用的库有自己的需求。但是,如果VENV只需要一个或两个不同的库,这会很快增加。当你有5-6个不同的VENV,每个VENV持有他们自己的tf或torch版本时。。。但我想这更多的是一个工程/标准化问题