ImportError:无法导入名称''u remove'u dead'u weakref'

2024-10-01 02:24:30 发布

您现在位置:Python中文网/ 问答频道 /正文

昨天把我的ubuntu17.04更新到了ubuntu17.10。有什么意见吗?当我试图在pycharm中运行服务器时出现。#django项目。在

bash -cl "/home/encuentrum/venv-encuentrum3/bin/python /usr/share/pycharm/helpers/pycharm/django_manage.py check /home/encuentrum/GitLab/encuentrum3/ENCUENTRUM/packers_"
Traceback (most recent call last):
  File "/usr/share/pycharm/helpers/pycharm/django_manage.py", line 5, in <module>
    from pycharm_run_utils import adjust_django_sys_path
  File "/usr/share/pycharm/helpers/pycharm/pycharm_run_utils.py", line 4, in <module>
    import imp
  File "/home/encuentrum/venv-encuentrum3/lib/python3.6/imp.py", line 19, in <module>
    from importlib._bootstrap import _ERR_MSG, _exec, _load, _builtin_from_name
  File "/home/encuentrum/venv-encuentrum3/lib/python3.6/importlib/__init__.py", line 57, in <module>
    import types
  File "/home/encuentrum/venv-encuentrum3/lib/python3.6/types.py", line 171, in <module>
    import functools as _functools
  File "/home/encuentrum/venv-encuentrum3/lib/python3.6/functools.py", line 23, in <module>
    from weakref import WeakKeyDictionary
  File "/home/encuentrum/venv-encuentrum3/lib/python3.6/weakref.py", line 12, in <module>
    from _weakref import (
ImportError: cannot import name '_remove_dead_weakref'

Tags: djangoinfrompyimporthomevenvlib
1条回答
网友
1楼 · 发布于 2024-10-01 02:24:30

可能您混合了多个Python安装,weakref的新版本与旧版本的Python二进制文件不兼容,请尝试删除Python安装的任何一个(建议使用旧版本)。在

分析

对于我的例子,我以前安装了旧版本的Python(3.5.1),并升级了Debian安装。较新的Debian升级了Python3.5到3.5.3,在Python二进制文件中,_remove_dead_weakref在{}中

当我输入$ where python3.5时,我得到

/usr/local/bin/python3.5    
/usr/local/bin/python3.5    
/usr/bin/python3.5

/usr/local/bin/python3.5是我自己的旧安装,/usr/bin/python3.5是Debian Officel Python3.5

当我用apt-get,apt-get-executepython3.5 -E -S /usr/lib/python3.5/py_compile.py $files(安装后脚本)更新Python3.5安装时,它触发了weakref问题,这是我的日志

^{pr2}$

我用相同的导入操作测试了python3.5.1和python3.5.3,下面是比较

来自apt get的官方python3.5.3

Python 3.5.3 (default, Sep 27 2018, 17:25:39) 
[GCC 6.3.0 20170516] on linux
>>> from _weakref import _remove_dead_weakref
>>> 

我自己的python3.5.1安装

Python 3.5.1 (default, Apr 23 2016, 16:40:21) 
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> from _weakref import _remove_dead_weakref
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name '_remove_dead_weakref'
>>> 

因此,我确认/usr/local/bin/中的python3.5不能使用_remove_dead_weakref。 但apt在安装后脚本中使用了哪个python呢?试试看。在

$ which python3.5
/usr/local/bin/python3.5

所以,这就是原因。安装后脚本使用python的自定义安装,以及更新的python库(/usr/lib/python3.5/weakref.py

修好它!在

就像我说的,旧版本的python

sudo mv /usr/local/bin/python3.5 /usr/local/bin/python3.5.bak

试验

$ which python3.5
/usr/bin/python3.5

相关问题 更多 >