【问题标题】:ImportError: No module named corsheadersImportError:没有名为 corsheaders 的模块
【发布时间】:2017-09-02 07:35:56
【问题描述】:
INSTALLED_APPS = [
    'login.apps.LoginConfig',
    'mainsaaas.apps.MainsaaasConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_ORIGIN_ALLOW_ALL = True

即使我安装了

pip 安装 django-cors-headers。现在它显示了 corsheaders 的导入错误,这是我检查过虚拟环境和 corsheaders 包的回溯

> Trace back:
>     
>     
>     Unhandled exception in thread started by <function wrapper at 0x7f5a7d5a1aa0> Traceback (most recent call last):   File
> "/home/next/virtual_env/venv/local/lib/python2.7/site-packages/django/utils/autoreload.py",
> line 226, in wrapper
>         fn(*args, **kwargs)   File "/home/next/virtual_env/venv/local/lib/python2.7/site-packages/django/core/management/commands/runserver.py",
> line 113, in inner_run
>         autoreload.raise_last_exception()   File "/home/next/virtual_env/venv/local/lib/python2.7/site-packages/django/utils/autoreload.py",
> line 249, in raise_last_exception
>         six.reraise(*_exception)   File "/home/next/virtual_env/venv/local/lib/python2.7/site-packages/django/utils/autoreload.py",
> line 226, in wrapper
>         fn(*args, **kwargs)   File "/home/next/virtual_env/venv/local/lib/python2.7/site-packages/django/__init__.py",
> line 27, in setup
>         apps.populate(settings.INSTALLED_APPS)   File "/home/next/virtual_env/venv/local/lib/python2.7/site-packages/django/apps/registry.py",
> line 85, in populate
>         app_config = AppConfig.create(entry)   File "/home/next/virtual_env/venv/local/lib/python2.7/site-packages/django/apps/config.py",
> line 90, in create
>         module = import_module(entry)   File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
>         __import__(name) ImportError: No module named corsheaders

我使用的是虚拟环境,我的 django 版本是:Django==1.10.5

【问题讨论】:

  • 你使用的是哪个python版本,是否使用虚拟环境?
  • 我认为 'django-cors-headers' 适用于 Django 版本:1.8、1.9、1.10。你检查过吗?
  • 您的导入错误是什么?包括回溯。
  • 你说你使用虚拟环境。首先登录到您的虚拟环境。然后检查 pip freeze corsheader 是否列出

标签: django python-2.7 django-cors-headers


【解决方案1】:

CorsMiddleware 应放置在尽可能高的位置,尤其是在任何可以生成响应的中间件之前,例如 Django 的 CommonMiddleware 或 Whitenoise 的 WhiteNoiseMiddleware。如果不是之前,它将无法将 CORS 标头添加到这些响应中。

另外,如果你使用 CORS_REPLACE_HTTPS_REFERER,它应该放在 Django 的 CsrfViewMiddleware 之前

【讨论】:

    【解决方案2】:

    你可以试试那个命令 pip install django-cors-headers 我使用 Django 版本:Django==2.1.7,python 版本:Python==3.6, 首先我尝试pip3 install django-cors-headers, 找不到模块名称corsheaders, 那我试试 pip install django-cors-headers 有效 这可能会帮助你 考虑一下 pip 的版本

    【讨论】:

      【解决方案3】:

      只需从 pip 安装

      python -m pip install django-cors-headers
      

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

      INSTALLED_APPS = [
          ...
          'corsheaders',
          ...
      ]
      

      希望它会起作用。如果不起作用,请重新启动服务器并再次运行。

      【讨论】:

        猜你喜欢
        • 2018-04-23
        • 2013-03-11
        • 2012-12-07
        • 2012-05-23
        • 2019-07-29
        • 2015-07-04
        • 2014-03-15
        • 2017-12-29
        • 2014-09-12
        相关资源
        最近更新 更多