关于pip:Python requirements.txt使用本地git依赖

Python requirements.txt use local git dependency

我有一个在Docker中运行的CentOS-7VM上的小型python flask应用程序,以及一个nginx反向代理。requirements.txt使用git+ssh引入了几个外部实用程序,例如:

1
git+ssh://path-to-our-repo/some-utility.git

我必须对实用程序进行更改,所以我在本地克隆了它,我需要应用程序使用我的本地版本。假设克隆和修改的实用程序位于本地目录中:

1
/var/work/some-utility

在requirements.txt中,我将条目更改为:

1
git+file:///var/work/some-utility

但是当我尝试用

1
sudo docker-compose up

我收到错误消息

1
2
Invalid requirement: 'git+file:///var/work/some-utility'
it looks like a path. Does it exist ?

我如何才能让它使用我本地的"某个实用程序"副本?

我也尝试过:

1
git+file:///var/work/some-utility#egg=someutility

但这也产生了同样的错误。

我查看了本地Git存储库中的PIP安装。

这与这个问题有关:

https://stackoverflow.com/questions/7225900/how-to-pip-install-packages-according-to-requirements-txt-from-a-local-directory?Rq=1

我想大多数人都会说,为什么不直接签入公司git repo的某个实用程序的开发分支,但在我的情况下,我对此没有特权。

或者我的问题与Docker有关,我需要将某个实用程序文件夹映射到Docker容器中,然后使用该路径?我是码头工人。

---编辑---

谢谢你的回答。我试图将一些实用程序文件夹添加到docker-compose.yml:

1
2
volumes:
  - ./some-utility:/usr/local/some-utility

然后将requirements.txt更改为

1
git+file:///usr/local/some-utility

但是我们的本地git repo刚刚停机进行维护,所以我必须等待一段时间,让它恢复运行以尝试这个方法。

==编辑2===

在进行上述更改后,当Docker Compose尝试构建我的端点应用程序时,运行它时会出现以下错误:

1
2
Cloning file:///usr/local/some-utility to /tmp/pip-yj9xxtae-build
fatal: '/usr/local/some-utility' does not appear to be a git repository

但是/usr/local/some-utility文件夹确实包含克隆的some-utility repo,我可以到那里运行git status。


如果在容器中运行pip install,那么当然,/var/work/some-utility需要在容器中可用。

您可以使用主机卷装载来公开容器中的目录,如下所示:

1
docker run -v /var/work/some-utility:/var/work/some-utility ...