问题描述
我已经将我的整个项目导入到 docker 中,并且我得到了一个
模块未找到错误
从我创建的模块之一。
FROM python:3.8
WORKDIR /workspace/
COPY . /workspace/
RUN pip install pipenv
RUN pipenv install --deploy --ignore-pipfile
#EXPOSE 8000
#CMD ["pipenv", "run", "python", "/workspace/bin/web.py"]
我试着四处寻找答案,但我似乎无法让它发挥作用。
命令:
docker build -t atletico .
docker run -p 8000:8000 atletico
Docker 构建: :
Traceback (most recent call last):
File "/workspace/bin/web.py", line 3, in <module>
from bin.setup import setup_app
ModuleNotFoundError: No module named 'bin'
我的目录的副本:
├── Dockerfile
├── Pipfile
├── Pipfile.lock
├── README.md
├── bin
│ ├── __init__.py
│ ├── __pycache__
│ │ └── web.cpython-38.pyc
│ ├── setup.py
│ └── web.py
├── docker-compose.yml
├── frio
│ ├── __init__.py
│ ├── __pycache__
│ │ └── __init__.cpython-38.pyc
│ ├── app_events.py
│ └── config.py
├── routes
│ ├── __init__.py
docker-compose.yml:
version: '3'
services:
db:
image: postgres:12
ports:
- "5432:5432"
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=test_db
redis:
image: "redis:alpine"
web:
env_file:
- .env.local
build: .
ports:
- "8000:8000"
volumes:
- .:/workspace
depends_on:
- db
- redis
command: "pipenv run python /workspace/bin/web.py"
1楼
所以我终于解决了这个问题。
对于那些可能想知道我是如何修复它的人。
您需要在Dockerfile
或docker-compose.yml
定义PYTHONPATH
环境变量。
2楼
我遇到了同样的问题,然后在将PYTHONPATH=/workspace
添加到 docker-compose.yml 后,就像示例照片中一样。
就我而言,它也可以在没有__init__.py
情况下工作。