在本地导入 python 模块时,我能够成功地做到这一点,但是在对应用程序进行 dockerising 时我很难做到这一点。似乎我在本地得到了与我进入 docker 应用程序相反的行为......有什么想法吗?
我有以下目录结构
| app
| |api.py
| |settings.py
| tests
| |test_api.py
在 api.py 中,我通过以下方式导入设置:
from app import settings
在 test_api.py 中,我通过以下方式导入 app.py from app import api
:。
在本地,一切正常。当我尝试使用以下 Dockerfile 对这个 API 进行 dockerize 时:
FROM python:3.8.5-alpine
RUN pip install pipenv
COPY Pipfile /usr/src/
WORKDIR /usr/src
RUN pipenv lock --requirements > requirements.txt
RUN pip install -r requirements.txt
COPY app /usr/src/app
WORKDIR /usr/src/app
CMD ["python", "api.py"]
docker 镜像构建成功,但是在运行容器时,我收到以下错误:
File "api.py", line 4, in <module>
from app import settings
ModuleNotFoundError: No module named 'app'
如果我将 api.py 中的导入方式更改为import settings
,我会在本地收到错误,但 docker 容器可以正常工作。我很确定这与 PythonPath 有关,关于如何解决这个问题的任何想法?