django-cors-header 出现问题 - ModuleNotFoundError: No module named 'corsheaders'

Posted

技术标签:

【中文标题】django-cors-header 出现问题 - ModuleNotFoundError: No module named \'corsheaders\'【英文标题】:Trouble with django-cors-header - ModuleNotFoundError: No module named 'corsheaders'django-cors-header 出现问题 - ModuleNotFoundError: No module named 'corsheaders' 【发布时间】:2019-03-06 05:08:48 【问题描述】:

我正在尝试将 Django-Cors-Headers 库添加到我的 Django REST Framework 项目中,该项目是 Dockerized。在没有库的情况下运行我的项目可以正常工作,但是在我按照django-cors-headers github 上的文档添加它之后 - 特别是:

从 pip 安装:

pip install django-cors-headers

(虽然在我的情况下,因为它是 dockerized,所以我做到了:)

docker-compose run --rm web pip install django-cors-headers

然后将其添加到您安装的应用程序中:

INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)

您还需要添加一个中间件类来监听响应:

MIDDLEWARE = [
    ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
]

好的,知道了所有这些,然后我运行:

docker-compose up

本质上只是等待 postgres,迁移,然后运行服务器。

这是我的堆栈跟踪:

Traceback (most recent call last):
  File "./manage.py", line 24, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 347, in execute
    django.setup()
  File "/usr/local/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python3.6/site-packages/django/apps/registry.py", line 89, in populate
    app_config = AppConfig.create(entry)
  File "/usr/local/lib/python3.6/site-packages/django/apps/config.py", line 90, in create
    module = import_module(entry)
  File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'corsheaders'

我也尝试将 django-cors-headers==2.40 添加到 requirements.txt 并通过以下方式安装:

docker-compose run --rm web pip install -r requirements.txt

但我得到了相同的结果。您能提供的任何帮助将不胜感激!!这是我第一次使用 django、drf 或 docker 做项目,如果我不是最有见识的,请见谅:)

【问题讨论】:

你重启服务器了吗? @a_k_v 是的,我最初尝试启动服务器时遇到了问题。 使用pip freeze并检查是否安装? @a_k_v 好的,在我的本地目录(在 venv 中)运行 pip freeze 会显示 django-cors-headers 库,但是当我运行“docker-compose run --rm web pip freeze”时图书馆不见了。因此,在清楚地使用 Docker 时,我对安装依赖项有一些不明白的地方。有什么建议吗? 将 cores-header 需求添加到需求中。文本文件。从项目的***目录运行 docker-compose up 命令。参考docs.docker.com/compose/django/#define-the-project-components。 【参考方案1】:

您的 docker 中缺少 cors-header。所以添加

django-cors-headers

在您项目的 requirements.txt 中。在(RUN apt-get update .....)之后将 django-cors-headers 依赖项添加到您的 Dockerfile 中。 现在构建并运行。使用任一

docker-compose build
docker-compose up

docker-compose up --build

【讨论】:

就是这样!我没有先建造:|这显然是当您在没有广泛了解您正在使用的工具的情况下使用样板时会发生的情况:) 感谢您的帮助!

以上是关于django-cors-header 出现问题 - ModuleNotFoundError: No module named 'corsheaders'的主要内容,如果未能解决你的问题,请参考以下文章

尽管将 AWS 静态文件路径添加到 CORS_ORIGIN_WHITELIST django-cors-headers,但出现 403 错误

django-cors-headers CORS_ORIGIN_WHITELIST 元组与字符串问题

Django-cors-headers解决跨域问题

即使使用 django-cors-headers 也得到 304 响应

django.urls、django rest 和 django-cors-headers - 导入问题

django-cors-headers