Search code examples
pythondockerdockerfilediscord.pypython-docker

Python docker keeps saying module not found


I am trying to build a docker to host my Discord bot. The dockerfile is

FROM python:3.8
COPY ./Elevate/* /docker/
RUN python3.8 -m pip install discord.py==1.5.1
RUN python3.8 -m pip install -r docker/requirements.txt
CMD ["python", "/docker/bot.py"]

and docker-build . -t bot works fine. However, when I try to run the docker, I get

  File "/docker/bot.py", line 2, in <module>
    import discord
ModuleNotFoundError: No module named 'discord'

When building the docker, I can see that it successfully installed discord==1.5.1

requirements.txt contains:

discord.py == 1.5.1
dblpy
python-dateutil
babel
aiohttp-requests
parsedatetime
wavelink
pillow
statcord.py
jishaku
ksoftapi

I'm pretty new to docker, so if this is a stupid mistake, please don't judge :)


Solution

  • Change the requirements.txt from

    discord.py == 1.5.1
    

    to

    discord.py==1.5.1
    

    It's a best practice to maintain a requirements.lock. You can generate the lock file by running pip freeze > requirements.lock in the docker container.

    Sample Command: docker exec -it <image> pip freeze > requirements.lock