【发布时间】:2019-06-17 13:06:44
【问题描述】:
这个问题Where do I put my python files in the venv folder? 的最常见答案是,您不应该将自己的文件放在 venv 目录中。
最有力的论点就是不要将自己的文件与外来文件混在一起,这很奇怪,因为通常开发人员会包含很多外来文件或代码或库,以免重新发明轮子。所以我认为这不是一个真正的好点。
另一个论点是
它提供了一个隔离的环境,您可以在其中下载不同版本的 python 包并为您的项目运行它。因此,不要在您的虚拟环境中放置任何东西。保持清洁。
相反,我认为将代码放入 venv 中是 最好的:
- 我用
--copies创建了我的venv,所以我的venv-dir 物理上包含了运行我的实际项目代码所需的所有东西。 python 安装并没有那么那么大。 - venv 包含完全包(无论是下载的,还是自己编写的通用打包代码)完全为实际项目代码的 testet 适用版本。哪个也可能适合或不适合其他项目代码,但这并不重要,因为 this 项目的所有内容都在那里/优化/安装。
- 整个 venv 目录都在版本控制之下,所以我基本上可以通过 subversion 而不是 pip 卸载一个包。
- 我什至可以通过 svn 将包括项目代码在内的整个 venv 部署到另一台机器上(当然,如果它“足够相似”......)并直接将我需要的所有东西放在一个地方。
最后的主要论点:我的项目代码只有在加载特定的 venv 时才会运行,因为一般安装不“知道”其中安装的包。
那么:如果项目代码没有它就无法运行,那么我的 venv 文件夹中的 source 文件夹有什么不好?
【问题讨论】:
-
“因为通常开发人员会包含很多外部文件或代码或库以不重新发明轮子” - 您的代码使用 venv 的内容这一事实并不意味着您应该 将您的代码物理插入到 venv 中。你已经使用了很多东西,而没有将自己插入其中,不是吗?
-
虚拟环境文件夹类似于
/usr/lib/python;它存储由您的代码导入但不属于您的代码的部分的文件。您不会将项目文件存储在/usr/lib/python中;也不要将它们存储在您的虚拟环境中。另外:为什么将 venv 文件夹置于源代码管理之下?它是一个派生的工件,根据需要从requirements.txt之类的东西创建,可以(并且应该)在源代码控制之下。
标签: python virtualenv python-venv