django - ImportError:无法在 django virtualenv 中导入名称 _remove_dead_weakref
问题描述
将我的 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
在其他情况下对相同错误的答案没有帮助,我的搜索没有更多线索。所以非常感谢你的提示。
解决方案
根据https://askubuntu.com/questions/981663/python2-7-broken-by-weakref-import-error-please-help您可能需要重新创建您的 virtualenv。我怀疑您的问题是deactivate
在尝试创建新环境之前您需要使用当前环境,以确保您的系统 python2 解释器是运行 virtualenv 命令的解释器。
推荐阅读
- django - Django - 注释多个 Sum() 对象会给出错误的结果
- spring - 无法读取配置属性
- sqlite - 无法使用带有 QML 事务的 Qt 删除 SQLite 数据库
- mysql - 为什么 Mysql 8.0.19 解释显示查询没有在“where tinyint”上使用索引,但“where tinyint = true”使用了索引
- javascript - 未处理的承诺拒绝:错误:网络错误
- cmd - 使用“如果存在”在 Wix 中执行 CustomAction
- svg - 如何减少网页中的svg路径
- python - 如何通过 selenium 连接 html 页面和 web(chrome)?
- reactjs - React Context 如何通过使用组件内部的函数来工作
- google-chrome-extension - 有没有办法加快我的 chrome 扩展的“待审核”过程?