使用自有的python pip依赖项和docker进行开发



我有几个python应用程序(每个应用程序都在单独的GitHub存储库中(,它们已经发展到它们都需要访问其中一个应用程序内部的一些函数和类。

我已经将共享代码提取到一个单独的存储库中,并将其作为一个包推送到 Gemfury 中。

我现在被困在使使用此包进行开发所需的步骤上 - 该包通过 Pipfile 作为依赖项安装,并且所有内容都按预期加载到我的开发 docker 容器中。

但是,如果我想对此包进行更改,这是一个漫长的过程,即推送新版本,安装新版本只是为了看看它如何与我的主要应用程序代码一起工作。

我现在有一个单独的签出共享存储库作为卷加载到 docker 容器中,但是当使用"python setup.py develop"时,开发版本不是用户而不是以前安装的版本(作为创建容器时从 Pipfile.lock 安装的一部分(。

还有其他人有这个挑战并知道解决这个问题的方法吗?

使用常规pip install,您可以:

src> git checkout ...app1.git
src> git checkout ...app2.git
src> pip install app1
src> pip install app2

这会使用从setup.py中的install_requires获取的版本(在全局范围内(进行安装。如果您的订单不正确,它将从 pypi 获取应用程序,而不是使用您的本地版本。

我不知道pipenv,但是使用virtualenv,您可以将代码和环境分开:

src> virtualenv dev
src> . devbinactivate
(dev) src> pip install -r app1requirements.txt
(dev) src> pip install -r app2requirements.txt
(dev) src> pip install -e app1
(dev) src> pip install -e app2

然后,对App1 的任何更改将立即对 App2 可见,前提是 App2 的要求.txt包括-e ../app1。(运行 ci 管道时删除-e ../可以使用sed 's,-e ../,,g' requirements.txt > requirements-ci.txt来完成,然后它将选择发布到 Gemfury 的最新版本(。

您的虚拟环境与任何全局安装的软件包隔离。

最新更新