我知道2种建议的做法似乎彼此矛盾:
>将项目所需的一切存储在源代码管理中.使用C应用程序时,我们会将所有库检查到源代码控制中,这样即使第三方库不再在线可用,新开发人员也始终拥有构建或运行项目所需的一切.
>对Python项目使用virtualenv可以将项目及其依赖项与对系统Python的升级隔离.安装的每个库都位于virtualenv内部,通常virtualenv绑定到特定路径(如文档中所建议),并且期望开发人员自己安装环境,然后大概添加任何依赖项的库.
理想情况下,我希望能够将新的依赖项安装到我的源代码控制存储库中的virtualenv中,将其检入,然后其他开发人员在更新时将获得正确的依赖项,而无论他们的系统Python安装了什么库,都没有冲突. .但是我很欣赏将整个virtualenv检查到源代码控制中会出现问题,因为不同的开发人员可能运行不同的解释器(基于其OS),并且可能需要某些特定扩展版本.也许这限制了我可以采用这种方法的范围.
因此,是否有一个折衷办法可以最大程度地减少需要在每台机器上完成的手动安装库的数量,并且可以在源代码管理中保持尽可能多的折衷,以减少软件包从Internet消失的风险?
解决方法:
我将点子束检查到源代码管理中: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,并将对其进行更新.您可以在源代码管理中拥有一个定期运行的更新脚本.