python - virtualenv 如何有效地与存储在源代码管理中的库一起使用?

标签 python version-control dependencies virtualenv

我知道 2 个建议的做法,它们似乎相互矛盾:

  1. 在源代码管理中存储项目所需的一切。在使用 C++ 应用程序时,我们会将所有库检查到源代码管理中,以便新开发人员始终拥有构建和运行项目所需的一切,即使第 3 方库不再在线可用。

  2. 对 Python 项目使用 virtualenv 将项目及其依赖项与系统 Python 升级隔离开来。安装的每个库都位于 virtualenv 中,通常 virtualenvs 绑定(bind)到特定路径(如文档中所建议的),预计开发人员自己安装环境,然后大概添加任何依赖的库。

    <

理想情况下,我希望能够将新的依赖项安装到我的源代码控制存储库中的 virtualenv 中,将其 checkin ,然后其他开发人员在更新时将获得正确的依赖项,无论他们的系统是什么库都不会发生冲突Python 已安装。但我明白将整个 virtualenv 检查到源代码控制中会出现问题,因为不同的开发人员可能运行不同的解释器(基于他们的操作系统)并且可能需要不同构建的某些扩展。也许这限制了我可以用这种方法走多远。

那么,是否有一种折衷方案可以最大限度地减少需要在每台机器上完成的手动安装库的数量,并尽可能地保留源代码控制以降低包从互联网上消失的风险?

最佳答案

我会将 pip 包检查到源代码管理中:http://www.pip-installer.org/en/latest/usage.html#bundles

如果您想将包存储在您的网络上,您可以使用 --index-url 告诉 pip 从哪里获取包,这样它们就不必从 PyPI 或其他地方获取它们:http://www.pip-installer.org/en/latest/usage.html#alternate-package-repositories

每个开发人员都会有自己的 virtualenv 并且他们会保持更新。您可以在它们定期运行的源代码控制中拥有一个更新脚本。

关于python - virtualenv 如何有效地与存储在源代码管理中的库一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8315896/

相关文章:

python - 在字典中查找整数最近邻

python - 如何处理 Linux/Python 依赖?

CMake 通配生成的文件

dependencies - SonarQube 依赖性检查 Sonar 插件

python - 已将多少行插入到 sqlite 表中?

python - 在项目列表上调用一个函数的最干净的方法

cvs - 在 CLI 中列出 CVS 模块内的所有标签

version-control - Perforce 和 Emacs

python - AppEngine Python API 异常处理

ant - 在典型的 ant 构建文件中有哪些默认目标?