Python 虚拟环境 (venv):正在使用的共享库和 dev/test envs
Python vitual environment (venv): Share libraries in usage and dev/test venvs
我是 python venv 的新人,很抱歉提出愚蠢的问题。
我正在开发一个小型图书馆。我已经创建了开发虚拟环境,其中包含库使用所需的所有包,并将所有版本的需求冻结到 requirements.txt。
我还想创建 requirements_test.txt,其中包含开发和测试所需的所有包。因此,用户将安装来自 requirements.txt 的需求,而来自 requirements_test.txt 的开发人员将安装所有必需的库(例如 pytest、asv、sphinx)。
现在我已经创建了dev venv,现在我想创建test venv,当然我不想安装相同的库两次。是否可以将一些库从一个 venv 共享到另一个?
我认为推荐并建议在同一台机器上拥有多个 venvs 和多个环境。所以再吃一个venv。在两个 venvs 中都存在相同的库是可以的。
即使在虚拟环境中,也有许多预装了 python 的库,并且在您正在开发的包中不是必需的,当我 运行 pip freeze
在一个品牌中新的虚拟环境转储了 30 个包,我的项目肯定不需要它们。
我建议你手动进行依赖维护(至少是生产环境),这样你就不会包含无用的库,你会保持你的依赖文件干净。
Is it possible to share some libs from one venv to another?
没有。每个虚拟环境将安装一次相同的库(或应用程序),安装不能在环境之间共享。像这样完全没问题。这就是虚拟环境的全部要点,来自同一个库的两个安装相互隔离,特别是在两个不同项目需要同一个库的两个不同版本的情况下。
为了完全公平,有一些方法可以在两个虚拟环境之间共享同一个库的一个安装以及这样做的原因。我目前知道的一个著名例子是 virtualenv (versions 20+). In short: this tool creates virtual environments and (under specific conditions) is able to reuse (share) the installations of pip, setuptools, and wheel in multiple environments, see the app-data
seeder for virtualenv.
的较新版本。
关于该主题的更多讨论:
我是 python venv 的新人,很抱歉提出愚蠢的问题。
我正在开发一个小型图书馆。我已经创建了开发虚拟环境,其中包含库使用所需的所有包,并将所有版本的需求冻结到 requirements.txt。
我还想创建 requirements_test.txt,其中包含开发和测试所需的所有包。因此,用户将安装来自 requirements.txt 的需求,而来自 requirements_test.txt 的开发人员将安装所有必需的库(例如 pytest、asv、sphinx)。
现在我已经创建了dev venv,现在我想创建test venv,当然我不想安装相同的库两次。是否可以将一些库从一个 venv 共享到另一个?
我认为推荐并建议在同一台机器上拥有多个 venvs 和多个环境。所以再吃一个venv。在两个 venvs 中都存在相同的库是可以的。
即使在虚拟环境中,也有许多预装了 python 的库,并且在您正在开发的包中不是必需的,当我 运行 pip freeze
在一个品牌中新的虚拟环境转储了 30 个包,我的项目肯定不需要它们。
我建议你手动进行依赖维护(至少是生产环境),这样你就不会包含无用的库,你会保持你的依赖文件干净。
Is it possible to share some libs from one venv to another?
没有。每个虚拟环境将安装一次相同的库(或应用程序),安装不能在环境之间共享。像这样完全没问题。这就是虚拟环境的全部要点,来自同一个库的两个安装相互隔离,特别是在两个不同项目需要同一个库的两个不同版本的情况下。
为了完全公平,有一些方法可以在两个虚拟环境之间共享同一个库的一个安装以及这样做的原因。我目前知道的一个著名例子是 virtualenv (versions 20+). In short: this tool creates virtual environments and (under specific conditions) is able to reuse (share) the installations of pip, setuptools, and wheel in multiple environments, see the app-data
seeder for virtualenv.
关于该主题的更多讨论: