我们正在使用Pipenv和Pipfiles来管理Python软件包要求。我们使用私人的GitLab服务器来管理我们的代码,包括作为软件包的来源,例如通过:
ourpkg = {ref = "master", git = "ssh://git@gitlab.company:/ourpkg.git"}
但是,代码已部署到可以访问Internet的单独的Prod环境中(因此可以拉下pypi包),但是无法访问我们的gitlab服务器。
我们提出的第一个解决方案是在Prod环境中镜像软件包仓库。但是,尽管Pipenv允许在包索引源中使用环境变量doesn't allow them in git urls in packages,但我们不能以此方式在每个环境中定义不同的基本URL。
我们提出的第二个解决方案是将程序包托管在私有程序包索引上,并将其用作Prod环境中的源。然后在[packages]
下指定prod链接,并在[dev-packages]
下指定gitlab git urls。
[[source]]
url = "https://pypi.prodenvironment/
name = "prodindex"
[packages]
ourpkg = {version = "*", index = "prodindex"}
[dev-packages]
ourpkg = {ref = "master", git = "ssh://git@gitlab.company:/ourpkg.git"}
但是,由于[packages]
要求优先于[dev-packages]
,并且Pipenv不允许deploy-only requirements,因此在dev中安装此操作失败。
我们如何在dev中为软件包指定 git repo 源,而在生产环境中为软件包指定其他(index或git repo)源?