我应该在使用virtualenv时提交/bin目录吗?

6
我正在开始我的第一个Python项目。我遵循“笨办法学Python”来创建一个Python骨架,同时我也在使用虚拟环境。
现在我想使用git进行版本控制。根据SO中的一些以前的问题,我不建议提交任何虚拟环境文件。相反,我可以使用pip freeze > requirements.txt,并使用.gitignore来忽略虚拟环境目录。
然而,虚拟环境和Python项目骨架都需要一个/bin目录,我应该将其提交吗?(实际上,我不知道/bin在Python项目中扮演的角色)
如果对我设置Python项目的过程有什么错误,请指正。任何建议都将不胜感激。

1
使用 pip freeze > requirements 就足以保存虚拟环境的状态。虚拟环境设置在您的系统上使用绝对路径,因此如果有人使用您的 /bin 从 git 克隆到他们的系统上,您的项目将无法正常工作,所以最好忽略所有 virtualenv 内容,包括 /bin 目录,当提交时。顺便说一下,/bin 目录是由 virtualenv 创建的,用于包含它用于在您的系统上运行项目的 python 可执行文件。因此,当提交到 git 时,您可以安全地忽略 /bin 目录,因为 virtualenv 会重新创建它。 - chickity china chinese chicken
1个回答

3

yourproject/binyourproject/env/bin是不同的,其中yourproject/env是虚拟环境的目录(它们都不在根目录下的/bin中)。您应该忽略env中的所有内容,确保您的项目可以适用于那些没有使用虚拟环境或以其他方式管理虚拟环境的人。否则,您将失去这些好处。

假设您完成了项目,我想使用它来完成新任务。我会启动一个新项目并使用自己的虚拟环境,并安装一些其他组件,然后再安装您的项目。糟糕的是,现在我的Python版本比起始时旧了,而且两年前的deactivate错误竟然又出现了。想象一下调试这个问题的麻烦,更别提发现您的项目替换了我的某些文件的恼怒。

(就这些情况而言,bin目录是虚拟环境中相当静态的部分;删除我的私有env的其他部分将更具破坏性。如果您提交了lib,那么我在安装您的项目之前将无法安装任何其他组件。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接