ImportError:无法在 django virtualenv 中导入名称 _remove_dead_weakref

Posted

技术标签:

【中文标题】ImportError:无法在 django virtualenv 中导入名称 _remove_dead_weakref【英文标题】:ImportError: cannot import name _remove_dead_weakref in django virtualenv 【发布时间】:2019-08-26 03:54:02 【问题描述】:

在将我的 Ubuntu 桌面从 16.04 升级到 18.04 后,django 的 virtualenv 拒绝启动:

(.djangoenv) mw@desktop:~/theapp$ python manage.py runserver
Traceback (most recent call last):
  File "manage.py", line 8, in <module>
    from django.core.management import execute_from_command_line
  File "/home/mw/.djangoenv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 10, in <module>
    from django.apps import apps
  File "/home/mw/.djangoenv/local/lib/python2.7/site-packages/django/apps/__init__.py", line 1, in <module>
    from .config import AppConfig   # NOQA
  File "/home/mw/.djangoenv/local/lib/python2.7/site-packages/django/apps/config.py", line 4, in <module>
    from django.core.exceptions import AppRegistryNotReady, ImproperlyConfigured
  File "/home/mw/.djangoenv/local/lib/python2.7/site-packages/django/core/exceptions.py", line 5, in <module>
    from django.utils.encoding import force_text
  File "/home/mw/.djangoenv/local/lib/python2.7/site-packages/django/utils/encoding.py", line 10, in <module>
    from django.utils.functional import Promise
  File "/home/mw/.djangoenv/local/lib/python2.7/site-packages/django/utils/functional.py", line 1, in <module>
    import copy
  File "/usr/lib/python2.7/copy.py", line 52, in <module>
    import weakref
  File "/usr/lib/python2.7/weakref.py", line 14, in <module>
    from _weakref import (
ImportError: cannot import name _remove_dead_weakref 

djangoenv 及其外部

$ python --version : 
`Python 2.7.12` 

希望解决这个问题,我也在桌面上安装了Python 2.7.16,所以我得到了:

$ python2.7 --version
Python 2.7.16

另外,当我尝试安装新的 virtualenv 时,我得到了同样的错误:

$ virtualenv .blaenv
Running virtualenv with interpreter /home/mw/.djangoenv/bin/python2
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 21, in <module>
    import logging
  File "/usr/lib/python2.7/logging/__init__.py", line 26, in <module>
    import sys, os, time, cStringIO, traceback, warnings, weakref, collections
  File "/usr/lib/python2.7/weakref.py", line 14, in <module>
    from _weakref import (
ImportError: cannot import name _remove_dead_weakref

在其他情况下对相同错误的回答没有帮助,我的搜索没有更多线索。 非常感谢您的提示。

【问题讨论】:

【参考方案1】:

根据https://askubuntu.com/questions/981663/python2-7-broken-by-weakref-import-error-please-help,您可能需要重新创建您的 virtualenv。我怀疑您的问题是在尝试创建新环境之前,您需要 deactivate 您当前的环境,以确保您的系统 python2 解释器是运行 virtualenv 命令的解释器。

【讨论】:

以上是关于ImportError:无法在 django virtualenv 中导入名称 _remove_dead_weakref的主要内容,如果未能解决你的问题,请参考以下文章

Django,ImportError:无法导入名称 Celery,可能的循环导入?

Django:ImportError:无法导入名称“用户”

ImportError:无法在 django virtualenv 中导入名称 _remove_dead_weakref

ImportError:升级到 Django 4.0 后无法从“django.conf.urls”导入名称“url”

Django 上的 MakeMigration 错误 - ImportError:无法从“django.db.models”导入名称“FieldDoesNotExist”

Django 无法从应用程序文件夹导入应用程序,ImportError