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

时间:2020-04-01 14:29:45

标签: python virtualenv

我是python venv的新手,非常抱歉可能出现的愚蠢问题。

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

我还想创建包含开发和测试所需的所有软件包的requirements_test.txt。因此,用户可以从Requirements.txt安装需求,而开发者可以从带有所有必要库(例如pytest,asv,sphinx)的requirements_test.txt安装。

现在我已经创建了dev venv,现在我想创建测试venv,当然,我不想两次安装相同的库。是否可以从一个venv共享一些库?

3 个答案:

答案 0 :(得分:2)

是否可以从一个venv共享一些库?

不。每个虚拟环境将一次安装相同的库(或应用程序),不能在环境之间共享安装。这样很好。这就是虚拟环境的全部内容,来自同一库的两个安装彼此隔离,特别是对于两个不同的项目需要相同库的两个不同版本的情况。

坦白地说,有两种方法可以在两个虚拟环境之间共享同一库的一个安装,并提供这样做的理由。我目前知道的一个著名示例是virtualenv(版本20+)的较新版本。简而言之:此工具可创建虚拟环境,并且(在特定条件下)能够重用(共享) pip setuptools wheel 在多个环境中,请参见app-data seeder for virtualenv

有关该主题的更多讨论:

答案 1 :(得分:-1)

我认为建议并建议在同一台计算机上使用多个虚拟机和多个环境。所以再来个venv。可以在两个venv中都存在相同的库。

答案 2 :(得分:-1)

即使在虚拟环境中,也有许多库预装了python,而在您正在开发的软件包中则是不必要的,当我在全新的虚拟环境中运行pip freeze时,它会转储30个软件包,并且可以肯定地我的项目不需要它们。

我建议您手动(至少在生产版本中)进行依赖项维护,这样就不会包括无用的库,并且可以使依赖项文件保持干净。