Docker环境下Django项目找不到graphene_django模块求助
解决Docker环境下
graphene_django模块找不到的问题 我来帮你分析下这个问题的核心原因和解决办法:
首先,你遇到的问题本质是本地Python环境和Docker容器的Python环境完全隔离——你在本地虚拟环境里用pip install graphene_django安装了包,但这个操作只影响你本地的环境,Docker容器里的Python环境根本感知不到这个包的存在,所以启动时会抛出ModuleNotFoundError。
为什么本地pip freeze能看到包,但容器里找不到?
Docker容器是一个独立的隔离运行环境,它的依赖是基于你项目里的配置文件(比如requirements/base.txt或者Pipfile)构建出来的。你本地pip freeze显示的是本地虚拟环境的依赖清单,和容器内的环境没有任何关联。
具体解决步骤:
第一步:把依赖添加到项目的依赖配置文件中
如果你的项目用的是requirements管理依赖,打开requirements/base.txt,添加一行:graphene-django==2.0.0如果用的是Pipenv(cookiecutter-django默认可能采用这种方式),执行命令:
pipenv install graphene-django==2.0.0这样依赖会被自动记录到
Pipfile和Pipfile.lock文件中。第二步:重新构建Docker镜像
因为Docker容器是基于镜像运行的,修改了依赖配置后,必须重新构建镜像才能让容器获取到新的依赖:docker-compose build第三步:重新启动服务
镜像构建完成后,再启动服务就不会出现模块找不到的错误了:docker-compose up
这样操作后,容器内的Python环境就会正确安装graphene_django,Django也能正常识别到这个应用了。
内容的提问来源于stack exchange,提问作者lgants
相关产品推荐
相关产品推荐

