Python requirements.txt使用本地git依赖

时间:2017-09-12 13:51:25

标签: python pip

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

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

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

/var/work/some-utility

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

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

但是当我尝试使用

运行应用程序时
sudo docker-compose up

我收到错误消息

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

我怎样才能使用我的本地副本" some-utility" ?

我也尝试过:

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

但是产生了同样的错误。

我看了PIP install from local git repository

这与这个问题有关:

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

我想大多数人都会说为什么不直接在公司git仓库中检查某个实用程序的开发分支,但在我的情况下,我没有权限。

或许我的问题与docker有关,我需要将some-utility文件夹映射到docker容器中,然后使用该路径?我是一个码头工人。

---编辑---

谢谢larsks的回答。我尝试将some-utility文件夹添加到docker-compose.yml:

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

然后将requirements.txt更改为

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

但是我们当地的git repo刚刚停止维护,所以我将不得不等待它重新尝试这个。

===编辑2 ===

完成上述更改后,在尝试构建端点应用程序时运行docker-compose时出现以下错误:

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。

1 个答案:

答案 0 :(得分:1)

如果您在容器内运行pip install,那么当然需要在容器内部提供/var/work/some-utility

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

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