【问题标题】:Do multiple, related Python projects need their own virtual environment?多个相关的 Python 项目是否需要自己的虚拟环境?
【发布时间】:2019-11-21 01:14:23
【问题描述】:

我有两个相关的 Python 项目:

../src/project_a
../src/project_a/requirements.txt
../src/project_a/project_a.py

../src/project_b
../src/project_b/requirements.txt
../src/project_b/project_b.py

两个项目都使用相同版本的 Python。各自的requirements.txt 文件相似但不相同。

我是为每个项目创建一个单独的虚拟环境,还是可以在../src 级别创建一个“全局”虚拟环境? 注意:我显然是使用虚拟环境的新手。

【问题讨论】:

  • Imo,您应该分开,因为您希望开发尽可能接近您将在生产中使用的内容
  • 创建虚拟环境时通常不会出现依赖问题,或者如果出现依赖问题也可以轻松修复。我会说如果您在两者中使用相同的库,则没有必要
  • @JackHanson 我很抱歉,但我对“没有必要”感到有些困惑。你的意思是 venv 通常不是必需的吗?我不会创建至少一个以便我可以 100% 确定我使用的是预期的 Python 版本吗? TIA
  • @RobertJoseph fair,我本来可以更清楚的。我的意思是我不相信有第二个是必要的。但这是我的观点,SO 更多的是关于具体的编码问题而不是意见,所以我不会说太多
  • 我觉得。而且我没有看到您的声誉分数/徽章,您已经知道这是如何工作的,哈哈。祝项目顺利

标签: python virtualenv


【解决方案1】:

虚拟环境旨在使事物彼此隔离。

  • 如果一个项目是另一个项目的依赖项,则它们必须安装在同一环境中。
  • 如果两个项目的依赖关系相互冲突,那么它们必须安装在不同的环境中。
  • 如果要在不同版本的 Python 解释器上运行两个项目,则必须将它们安装在不同的环境中。

这基本上是唯一的规则(我能想到的)。对我来说,其余的只是最佳实践、个人意见、常识、技术限制等的混合体。

例如,人们可以(再次)想到宠物与牛的类比。虚拟环境可以被视为丢弃的东西,按需创建(例如使用 tox 等工具自动创建),一旦清楚地写下依赖关系(例如在 requirements.txt 中),这很容易。

在您的情况下,我可能会从单个 Python 虚拟环境开始,并且仅在需要时才开始创建更多。一旦项目规模扩大,这很可能会发生。最终,一旦一个项目需要特定版本的依赖项与另一个项目的依赖项冲突,它可能会成为绝对必要的。

【讨论】:

    猜你喜欢
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 2021-03-22
    • 1970-01-01
    • 2017-12-19
    • 2017-12-25
    • 2019-06-13
    相关资源
    最近更新 更多