Pip安装-e软件包不会出现在Docker中
我有一个requirements.txt
文件,其中包含:
Flask-RQ==0.2 -e git+https://token:x-oauth-basic@github.com/user/repo.git#egg=repo
当我尝试使用Docker Compose构build一个Docker容器时,它会下载这两个包并将其安装,但是当我做一个pip freeze
,没有-e
包的标志。 当我尝试运行应用程序,看起来好像这个软件包还没有安装。 以下是构build的相关输出:
Collecting Flask-RQ==0.2 (from -r requirements.txt (line 3)) Downloading Flask-RQ-0.2.tar.gz Obtaining repo from git+https://token:x-oauth-basic@github.com/user/repo.git#egg=repo (from -r requirements.txt (line 4)) Cloning https://token:x-oauth-basic@github.com/user/repo.git to ./src/repo
这里是我的Dockerfile
:
FROM python:2.7 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY requirements.txt /usr/src/app/ RUN pip install -r requirements.txt COPY . /usr/src/app
我觉得这种情况很奇怪,并希望得到任何帮助。
我遇到了一个类似的问题,一个可能出现问题的方法是:
WORKDIR /usr/src/app
在pip install
之前设置。 pip将在WORKDIR中创buildsrc/
目录(安装包的位置)。 现在所有这些都不应该成为问题,因为你的应用程序文件在复制时不应覆盖src/
目录。
但是,您可能正在将卷挂载到/usr/src/app
。 当你这样做,你会覆盖/usr/src/app/src
目录,然后你的包将不会被发现。
所以一个修复是在pip install
之后移动WORKDIR。 所以你的Dockerfile
看起来像这样:
FROM python:2.7 RUN mkdir -p /usr/src/app COPY requirements.txt /usr/src/app/ RUN pip install -r /usr/src/app/requirements.txt COPY . /usr/src/app WORKDIR /usr/src/app
这为我修好了。 希望它会为你工作。
@mikexstudios是正确的,这是因为pip将包源保存在/usr/src/app/src
,但是你在本地目录中放置了一个本地目录,这意味着python无法find包源。
我没有改变WORKDIR
的位置,而是通过将pip命令更改为:
pip install -r requirements.txt --src /usr/local/src
以太的方法应该工作。