Docker中Python镜像安装paramiko后仍出现ModuleNotFoundError问题求助
我遇到了一个特别费解的问题:明明在Docker镜像构建过程中,日志明确显示paramiko已经成功安装,但运行容器时却一直抛出ModuleNotFoundError: No module named 'paramiko',实在摸不清哪里出了问题,求各位帮忙分析排查!
先梳理下我的操作和现状:
- paramiko已经添加到
requirements.txt中,Dockerfile里通过RUN pip3 install -r requirements.txt --prefer-binary命令安装依赖 - 我还尝试过用
apk add py3-paramiko直接通过系统包管理器安装,结果依然报错 - docker-compose的构建日志里清晰列出了成功安装的依赖,其中就包括paramiko-3.3.1:
Successfully installed Django-4.1.3 PyNaCl-1.5.0 asgiref-3.7.2 bcrypt-4.0.1
beautifulsoup4-4.12.2 certifi-2023.7.22 cffi-1.16.0 charset-normalizer-3.2.0
cryptography-41.0.4 django-auth-ldap-4.5.0 django-bootstrap-v5-1.0.11 djangoajax-3.3
dnspython-2.4.2 gunicorn-21.2.0 idna-3.4 multiping-1.1.2
mysql-connector-python-8.0.29 packaging-23.1 paramiko-3.3.1 protobuf-4.24.3
pyasn1-0.5.0 pyasn1-modules-0.3.0 pycparser-2.21 python-ldap-3.4.3 requests-2.31.0
soupsieve-2.5 sqlparse-0.4.4 urllib3-2.0.5
但容器启动后,却触发了如下错误栈:
web_1 | File "/usr/local/lib/python3.9/site-packages/django/urls/conf.py", line 38, in include web_1 | urlconf_module = import_module(urlconf_module) web_1 | File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module web_1 | return _bootstrap._gcd_import(name[level:], package, level) web_1 | File "<frozen importlib._bootstrap>", line 1030, in _gcd_import web_1 | File "<frozen importlib._bootstrap>", line 1007, in _find_and_load web_1 | File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked web_1 | File "<frozen importlib._bootstrap>", line 680, in _load_unlocked web_1 | File "<frozen importlib._bootstrap_external>", line 850, in exec_module web_1 | File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed web_1 | File "/usr/src/app/emailflow/urls.py", line 2, in <module> web_1 | from . import views web_1 | File "/usr/src/app/emailflow/views.py", line 3, in <module> web_1 | from . import main web_1 | File "/usr/src/app/emailflow/main.py", line 7, in <module> web_1 | import paramiko web_1 | ModuleNotFoundError: No module named 'paramiko'
附上我的Dockerfile内容:
# pull official base image FROM python:3.9.0-alpine RUN apk update \ && apk add --virtual build-deps gcc python3-dev musl-dev \ && apk add postgresql-dev alpine-sdk bash build-base \ && pip3 install psycopg2 \ && apk del build-deps # set work directory WORKDIR /usr/src/app # set environment variables ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 RUN apk add build-base openldap-dev python3-dev # install dependencies RUN pip3 install --upgrade pip COPY ./requirements.txt . RUN pip3 install -r requirements.txt --prefer-binary # copy entrypoint.sh COPY ./entrypoint.sh . RUN sed -i 's/\r$//g' /usr/src/app/entrypoint.sh RUN chmod +x /usr/src/app/entrypoint.sh # copy project COPY . . # run entrypoint.sh ENTRYPOINT ["/usr/src/app/entrypoint.sh"]
补充说明:我的entrypoint.sh只做了数据库迁移、创建超级用户这类常规初始化操作,应该不会影响依赖的加载。
真心希望各位大佬能帮忙找出问题根源,万分感谢!
备注:内容来源于stack exchange,提问作者WernerDrasche




