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

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

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

  1. # Use an official Python runtime as the base image
  2. FROM python:3.10.5
  3. # Set the working directory in the container
  4. WORKDIR /code/
  5. RUN pip install pipenv
  6. COPY Pipfile Pipfile.lock /code/
  7. RUN pipenv install --system --dev
  8. # Install Google Chrome dependencies
  9. RUN apt-get update && apt-get install -y \
  10. #a lot of impiort
  11. && rm -rf /var/lib/apt/lists/*
  12. # Install Google Chrome
  13. RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
  14. RUN dpkg -i google-chrome-stable_current_amd64.deb
  15. RUN apt --fix-broken install -y
  16. # Download and install the latest stable ChromeDriver
  17. RUN CHROME_DRIVER_VERSION=$(curl --silent https://chromedriver.storage.googleapis.com/LATEST_RELEASE) && \
  18. wget https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip && \
  19. unzip chromedriver_linux64.zip && \
  20. rm chromedriver_linux64.zip && \
  21. mv chromedriver /usr/local/bin/
  22. COPY . /code/
  23. # run the main_daily_task.py file
  24. 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”的模块
但是,当我将导入更改为

  1. from database import SessionLocal

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

8hhllhi2

8hhllhi21#

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

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

  1. import database from SessionLocale

相关问题