如何在运行www.example.com文件时修复python docker容器中的“ModuleNotFoundError”main.py?

nuypyhwy  于 2023-05-28  发布在  Docker
关注(0)|答案(1)|浏览(214)

我正在从dockerfile运行一个docker容器:

# Use an official Python runtime as the base image
FROM python:3.10.5

# Set the working directory in the container
WORKDIR /code/

RUN pip install pipenv
COPY Pipfile Pipfile.lock /code/
RUN pipenv install --system --dev

# Install Google Chrome dependencies
RUN apt-get update && apt-get install -y \
   #a lot of impiort
 && rm -rf /var/lib/apt/lists/*

# Install Google Chrome
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
RUN dpkg -i google-chrome-stable_current_amd64.deb
RUN apt --fix-broken install -y

# Download and install the latest stable ChromeDriver
RUN CHROME_DRIVER_VERSION=$(curl --silent https://chromedriver.storage.googleapis.com/LATEST_RELEASE) && \
    wget https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip && \
    unzip chromedriver_linux64.zip && \
    rm chromedriver_linux64.zip && \
    mv chromedriver /usr/local/bin/

COPY . /code/

# run the main_daily_task.py file
CMD  ["python", "app/main_daily_task.py"]

我在docker容器中得到以下错误:
2023-05-25 16:27:46 Traceback(most recent call last):
2023-05-25 16:27:46 File“/code/app/main_daily_task.py”,line 13,in
2023-05-25 16:27:46从app.database导入SessionLocal
2023-05-25 16:27:46 ModuleNotFoundError:没有名为“app”的模块
但是,当我将导入更改为

from database import SessionLocal

这很有效。
我不能更改导入路径,因为有些文件在其他容器中使用,所以我认为下一个最好的步骤是更改工作目录,但在Dockerfile中它已经是正确的。
我如何解决这个问题,我做错了什么,为什么我的工作目录是code/app/ not code/ how i在dockerfile中指定的?
编辑:也许我需要在运行时指定base_dir?但我认为这是非常丑陋的,而不是它是如何反对。谢谢你提前:)

8hhllhi2

8hhllhi21#

CMD  ["python", "/code/app/main_daily_task.py"]

指定绝对路径并确保python脚本具有可执行权限。
该应用程序不是Python模块。在这里,Python将应用程序视为SessionLocale中的模块而不是目录。你最好试试:

import database from SessionLocale

相关问题