Python Docker容器,找不到模块

时间:2020-09-08 14:50:28

标签: python docker modulenotfounderror

我具有以下项目结构

twoFlasks/
├── app.py
├── common/
│   ├── file1.py        
│   ├── file2.py       
│   └── file3.py    
├── Dockerfile
├── requirements.txt       
├── bot1/   
│   │        
│   ├── routes/
│   │   └── bot1_routes.py
└── bot2/
    └── routes/
        └── bot2_routes.py

以及以下Dockerfile:

FROM python:3.8

WORKDIR /project

COPY requirements.txt .
COPY app.py .

RUN pip3 install -r requirements.txt

COPY bot1/ .
COPY bot2/ .
COPY common/ .

EXPOSE 5000 3000

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

该映像已成功构建,但是当我必须运行容器时,会从我的app.py文件的日志中收到以下错误消息

Traceback (most recent call last):
  File "./app.py", line 9, in <module>
    from bot2.routes import bot2_routes
ModuleNotFoundError: No module named 'bot2'

它在本地工作,但不能在Docker容器中工作,我有点不知所措。如果有人知道可能是什么问题,我将不胜感激!

2 个答案:

答案 0 :(得分:0)

如果您使用的是Python <3.3,则需要在包根目录中使用<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" href="style.css"> <title>Document</title> </head> <body> <div class="back1"> <h1 class="h1">PARALLAX &nbspEFFECT</h1> <img src="xicon.svg" width="25px" class="xicon" alt="xicon"> <p class="swipe">Swipe up</p> </div> <div class="section1"> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Omnis excepturi vel quaerat autem vitae corrupti ut sapiente? Ipsa asperiores odio perspiciatis vitae in! Ex ducimus numquam, nesciunt vel maiores fuga in eaque iure fugiat perspiciatis tempore ipsum magni necessitatibus ratione cum harum illum consequuntur earum praesentium impedit tenetur adipisci odio provident. Esse deleniti fugiat dolorem obcaecati quae. Animi corporis, eos laboriosam numquam! Quae labore minus modi, cupiditate ea culpa deleniti, mollitia ipsam recusandae numquam amet cumque, ad eius. Harum aspernatur hic consectetur obcaecati est deleniti aperiam repellendus voluptate alias. Ducimus cumque sapiente reprehenderit veniam ratione nostrum enim odio accusantium dicta.</p> </div> <div class="back2"></div> <div class="section2"> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Omnis excepturi vel quaerat autem vitae corrupti ut sapiente? Ipsa asperiores odio perspiciatis vitae in! Ex ducimus numquam, nesciunt vel maiores fuga in eaque iure fugiat perspiciatis tempore ipsum magni necessitatibus ratione cum harum illum consequuntur earum praesentium impedit tenetur adipisci odio provident. Esse deleniti fugiat dolorem obcaecati quae. Animi corporis, eos laboriosam numquam! Quae labore minus modi, cupiditate ea culpa deleniti, mollitia ipsam recusandae numquam amet cumque, ad eius. Harum aspernatur hic consectetur obcaecati est deleniti aperiam repellendus voluptate alias. Ducimus cumque sapiente reprehenderit veniam ratione nostrum enim odio accusantium dicta.</p> </div> <div class="back3"></div> <div class="section3"> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Omnis excepturi vel quaerat autem vitae corrupti ut sapiente? Ipsa asperiores odio perspiciatis vitae in! Ex ducimus numquam, nesciunt vel maiores fuga in eaque iure fugiat perspiciatis tempore ipsum magni necessitatibus ratione cum harum illum consequuntur earum praesentium impedit tenetur adipisci odio provident. Esse deleniti fugiat dolorem obcaecati quae. Animi corporis, eos laboriosam numquam! Quae labore minus modi, cupiditate ea culpa deleniti, mollitia ipsam recusandae numquam amet cumque, ad eius. Harum aspernatur hic consectetur obcaecati est deleniti aperiam repellendus voluptate alias. Ducimus cumque sapiente reprehenderit veniam ratione nostrum enim odio accusantium dicta.</p> </div> <script src="app.js"> </script> </body> </html>文件来帮助Python构建名称空间:Python - Module Not Found

答案 1 :(得分:0)

所以,解决我的问题的是Dockerfile中的更改。

COPY bot1/ ./bot1
COPY bot2/ .bot2
COPY common/ ./common

不仅仅是将文件夹复制到。