为什么我不应该将项目文件放在venv文件夹中?

时间:2019-01-23 21:15:41

标签: python virtualenv python-venv

此问题Where do I put my python files in the venv folder?的最常见回答是,您不应将自己的文件放在venv目录中。

最有力的论据就是不要将自己的文件与外部文件混在一起,这很奇怪,因为在一般情况下,开发人员会包含很多外部文件或代码或库,以免浪费时间。所以我认为这不是真正的好处。

另一个参数是

  

它提供了一个隔离的环境,您可以在其中下载不同版本的python软件包并为您的项目运行它。因此,请勿在虚拟环境中放置任何东西。保持清洁。

我认为将代码放在venv中是最好的事情,相反:

  • 我使用--copies创建venv,因此venv-dir实际包含了运行我的实际项目代码所需的所有内容。 python安装根本不大。
  • venv包含 exactly ,在实际项目代码的testet适用版本中, exactly 完全是 软件包(已下载或自行编写的通用打包代码)。哪个可能也可能不适合其他项目代码,但这无关紧要,因为对于这个项目,一切都已经存在/已优化/已安装。
  • 整个venv目录受版本控制,因此,我甚至可以通过颠覆而不是pip来卸载软件包。
  • 我什至可以通过svn将包括项目代码在内的整个venv部署到另一台机器上(当然,如果它的“足够相似” ...),直接将我需要的全部存储在一处。

最后一个主要参数:我的项目代码只有在加载了特定的venv后才会运行,因为常规安装不会“知道”其中的已安装软件包。

所以:如果我的venv文件夹中的source文件夹仍然无法运行,那怎么办?

1 个答案:

答案 0 :(得分:1)

您的代码所依赖的

代码(顺便说一下,不一定是python,许多软件包实际上包装了c和c ++代码)对于不同的硬件和操作系统,有时会以不同的方式构建,一旦安装了软件包,即表示它已构建对于特定的运行时,环境取决于安装它的系统的类型。

如果要“冻结”应用程序依赖项的状态,最佳实践是使用requirements文件,该文件可以轻松启用依赖项解析。 此外,您可以强制使用specific python interpreters

如果您想确保发布的应用程序在不同系统上的运行方式完全相同,建议您查看containers