【问题标题】:Python Django : No module named securityPython Django:没有名为安全的模块
【发布时间】:2014-09-17 22:39:47
【问题描述】:

当我使用 virtualenv 在 Ubuntu 服务器上部署我的项目时,我收到了这个错误:

[17/Sep/2014 22:29:00] "GET / HTTP/1.1" 500 59
Traceback (most recent call last):
File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run
self.result = application(self.environ, self.start_response)
File "/home/zat42/myproject/monarch/env/local/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 64, in __call__
return self.application(environ, start_response)
File "/home/zat42/myproject/monarch/env/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 168, in __call__
self.load_middleware()
File "/home/zat42/myproject/monarch/env/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 44, in load_middleware
mw_class = import_string(middleware_path)
File "/home/zat42/myproject/monarch/env/local/lib/python2.7/site-packages/django/utils/module_loading.py", line 26, in import_string
module = import_module(module_path)
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named security

我不知道为什么会出现此错误,我的配置在全新安装时运行良好...但是当我复制当前项目时,出现错误 500。我尝试“部分”部署,但我不能找不到问题所在。

如果您需要更多我的文件,请告诉我,因为我真的不知道问题出在哪里...

谢谢。

【问题讨论】:

  • 您是否将 virtualenv 文件夹从本地计算机复制到服务器?尝试在没有 virtualenv 的情况下复制项目文件,并在服务器上重新创建 virtaulenv 而无需从您的机器复制。
  • 我按照你说的做了,首先我复制了我的项目(来自 git repo),然后我安装了一个新的环境(使用“virtualenv env”)。
  • 运行“pip freeze”,检查包是否都在那里。
  • pip freeze Django==1.7 MySQL-python==1.2.5 argparse==1.2.1 wsgiref==0.1.2 好像还可以

标签: python django module virtualenv


【解决方案1】:

我遇到了同样的问题。最后,我发现我正在使用 django 1.7.1 运行一个 1.8dev 生成的项目。当我切换回 1.7.1,并在 setting.py 中删除 'django.middleware.security.SecurityMiddleware' 时,似乎没问题。

【讨论】:

  • 我在没有激活虚拟环境的情况下运行runserver时遇到了这个问题(虚拟环境有1.9版的django,系统有1.6版的django)
【解决方案2】:

从另一台电脑切换我的项目时,我遇到了同样的问题。因为我不太喜欢删除

'django.middleware.security.SecurityMiddleware'

我刚刚创建了一个新项目和一个新应用,手动更改了设置并复制了其余文件,并且成功了 :)

我猜这与项目的密钥有关。

【讨论】:

    【解决方案3】:

    所以,我找到了解决办法:

    'django.middleware.security.SecurityMiddleware'
    

    这一行在 MIDDLEWARE_CLASSES 中,来自 settings.py。 当我删除这一行时,安全模块不再有问题,但我想这不是解决问题的好方法......我猜这行与 crsf 令牌和类似的东西有关。

    还有什么办法可以解决这个问题吗?

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题。原来,我无意中使用了我机器的 django-admin.py 版本来启动我的 Django 项目,而不是安装在 virtualenv 中的那个。在 virtualenv 中安装 django 之后,在运行任何 django-admin 命令之前,我最终不得不再次source bin/activate

      【讨论】:

        【解决方案5】:

        如果您之前为此项目使用过 virtualenv,请确保您在下次使用此项目时激活它source bin/activate 或检查您是否使用了正确版本的 @ 987654322@.

        如果你想删除一些中间件,那么你需要确定你在做什么。

        【讨论】:

          【解决方案6】:

          使用它对我有用

          MIDDLEWARE_CLASSES = [
          'django.contrib.sessions.middleware.SessionMiddleware',
              'django.middleware.common.CommonMiddleware',
              'django.middleware.csrf.CsrfViewMiddleware',
              'django.contrib.auth.middleware.AuthenticationMiddleware',
              'django.contrib.messages.middleware.MessageMiddleware',
              'django.middleware.clickjacking.XFrameOptionsMiddleware',
          ]
          

          【讨论】:

            【解决方案7】:

            我猜这发生在 django 版本 1.7.x 中,当您尝试打开使用高于 1.7.x 的 django 版本创建的项目时

            删除 'django.middleware.security.SecurityMiddleware' 会有所帮助,但会产生另一个问题 'session error' 或其他问题

            解决这个问题:

            pip uninstall django==1.7.x //your current version of django installed
            pip install django==1.9.x //or version that is compatible with the project
            

            【讨论】:

              【解决方案8】:
              (myvenv) pip uninstall django==(version)
              (myenv) pip install django==(version)
              

              就是这样。

              【讨论】:

                猜你喜欢
                • 2019-04-24
                • 2013-07-24
                • 1970-01-01
                • 2017-08-27
                • 2014-01-18
                • 2019-03-27
                • 1970-01-01
                • 2018-01-16
                • 2022-01-19
                相关资源
                最近更新 更多