停靠python应用程序时发现ModuleNotFound

2024-04-20 02:53:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的python应用程序,它使用我创建的自定义类。以下文件夹结构如下:

│ mains
|   ├── run_it.py
|   ├── __init__.py
│   ├── parsers
    │   ├── parser.py
    │   ├── __init__.py

在逃_it.py公司,主程序,我打电话来

from mains.parsers.parser import Parser

在本地模式下,我添加了~/.bashrc行,效果很好:

export PYTHONPATH="${PYTHONPATH}:/home/.../THE_FOLDER_ABOVE_MAINS" 

但是,当我尝试对应用程序进行dockerize时,出现以下错误:

File "/app/run_it.py", line 11, in <module>
from mains.parsers.parser import Parser
ModuleNotFoundError: No module named 'mains'

我的Dockerfile是:

FROM python:3

RUN mkdir /app
WORKDIR /app
ADD . /app/

RUN apt-get update
RUN pip3 install gunicorn
RUN pip3 install -r requirements.txt

EXPOSE 5000

ENV PYTHONIOENCODING=utf-8

ENV GUNICORN_CMD_ARGS="--bind 0.0.0.0:5000 --workers=2"
CMD ["gunicorn","run_it:app"]

你知道我该怎么解决吗? 提前谢谢!你知道吗


Tags: runfrompyimportapp应用程序parserinit
2条回答

试试这个,它起作用了。。你知道吗

从解析器.parser导入分析器

enter image description here

我没有看到您在容器中设置任何模块路径,那么对于您的情况,运行顶层脚本run_it.py的文件夹app会自动添加到模块路径中。你知道吗

因此,您应该使用next:

from parsers.parser import Parser

另一种方法是在Dockerfile旁边添加(假设是mains的同一个文件夹):

ENV PYTHONPATH=/app

然后您仍然可以使用from mains.parsers.parser import Parser

相关问题 更多 >