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



这个问题最常见的答案 我应该把我的 python 文件放在 venv 文件夹中的什么位置?说,你不应该把自己的文件放在 venv 目录中。

最有力的论据就是不要将自己的文件与外来文件混淆,这很奇怪,因为一般来说,开发人员会包含大量外来文件或代码或库,以免重新发明轮子。所以我认为这不是一个真正的好点。

另一个论点是

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

我认为相反,将您的代码放在 venv 中是最好的选择:

  • 我用--copies创建我的 venvs,所以我的 venv-dir 物理上包含运行我的实际项目代码所需的所有内容。python安装根本不那么大。
  • venv 完全包含包(无论是下载的,还是自己编写的通用打包代码),完全是实际项目代码的测试适用版本。这可能也适合也可能不适合其他项目代码,但这并不重要,因为一切都在那里/为这个项目优化/安装。
  • 整个 venv 目录都在版本控制之下,所以我基本上可以通过 subversion 而不是 pip 卸载一个包。
  • 我甚至可以通过 svn 将整个 venv 包括项目代码部署到另一台机器(当然,如果它"足够相似"......),并直接将我需要的所有内容放在一个地方。

最后是主要论点:我的项目代码只有在加载特定的 venv 时才会运行,因为常规安装不会"知道"其中已安装的软件包。

那么:如果项目代码没有它就无法运行,那么我的 venv 文件夹中的source文件夹有什么不好?

您的代码所依赖的代码(顺便说一下,不一定是 python,许多包实际上包装了 C 和 C++ 代码)有时针对不同的硬件和操作系统构建不同,一旦安装了软件包,就意味着它是为特定的运行时构建的,并且环境绑定到安装它的系统类型。

如果要"冻结"应用程序依赖项的状态,最佳做法是使用可轻松启用依赖项解析的需求文件。 此外,您可以强制使用特定的 python 解释器

如果您想发布一个应用程序,并保证它将在不同的系统上以完全相同的方式运行,我建议查看容器

相关内容

  • 没有找到相关文章

最新更新