Joh*_*ohn 3 python-3.x docker dockerfile
我有一个使用 Python 和 Docker 实现的功能。
当我运行时docker-compose up -d,我能够成功构建映像,并且整个文件夹都被复制到 Docker 容器中,并且我能够在容器中看到复制的文件。
但是,在运行 Python 文件时,出现错误
ModuleNotFoundError: No module named "bank_transactions"
在文件 main_transactions.py 中,我导入了常量文件,我在下面的屏幕截图中显示了文件夹结构。

当我通过 PyCharm 运行该应用程序时,它运行良好,没有任何问题。
下面是 Docker 文件配置。
docker-compose.yml
version: "3.6"
services:
app :
build: .
db:
image: postgres
restart: always
environment:
POSTGRES_USERNAME: root
POSTGRES_PASSWORD: root
POSTGRES_DB: testdb
ports:
- 5432:5432
Run Code Online (Sandbox Code Playgroud)
文件
FROM python:3.6
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY . /code/
RUN pip install -r requirements.txt
CMD [ "python", "/Transactions/bank_transactions/main_transactions.py" ]
Run Code Online (Sandbox Code Playgroud)
错误日志:
Traceback (most recent call last):
app6_1 | File "/code/bank_transactions/main_transactions.py", line 5, in <module>
app6_1 | from bank_transactions import constants
app6_1 | ModuleNotFoundError: No module named 'bank_transactions'
Run Code Online (Sandbox Code Playgroud)
乍一看,您在日志中获得的错误
[…] 回溯(最近一次通话):
app6_1 | 文件“/code/bank_transactions/main_transactions.py”,第 5 行,在<module>
app6_1 | 从 bank_transactions 导入常量
app6_1 | ModuleNotFoundError: 没有名为“bank_transactions”的模块
表明文件main_transactions.py确实被解析,这反过来导入constants.py文件,但失败。
实际上,这与import遍历目录以查找 python 包的方式有关,我很确定您的错误应该通过设置PYTHONPATH环境变量而消失:
FROM python:3.6
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
WORKDIR /code
COPY . /code/
RUN pip install -r requirements.txt
ENV PYTHONPATH /code
CMD [ "python", "/code/bank_transactions/main_transactions.py" ]
Run Code Online (Sandbox Code Playgroud)
有关其他详细信息,请参阅this other StackOverflow question(它处理 Python2 ?参见 ImportError 而不是 ModuleNotFoundError with Python3 ?但修复应该是相同的)。
| 归档时间: |
|
| 查看次数: |
3732 次 |
| 最近记录: |