在 3.5.3 virtualenv 中运行时 Vim 中的 Python 错误

我pyenv在 Ubuntu 16.04 上安装了多个 Python 版本。我创建了虚拟环境来处理使用不同版本的项目pipenv。然而,为Python 3.5.x的只有我得到这样的错误,当我尝试用Vim编辑8(通过安装的文件PPA)在激活的virtualenv:


"test.py" 49L, 1434C

Error detected while processing function jedi#init_python[4]..<SNR>48_init_python[27]..jedi#setup_python_imports:

line   25:

Traceback (most recent call last):

  File "<string>", line 1, in <module>

  File "/home/user/.local/share/virtualenvs/test-AYf6DmHL/lib/python3.5/imp.py", line 19, in <module>

    from importlib._bootstrap import _ERR_MSG, _exec, _load, _builtin_from_name

  File "/home/user/.local/share/virtualenvs/test-AYf6DmHL/lib/python3.5/importlib/__init__.py", line 57, in <module>

    import types

  File "/home/user/.local/share/virtualenvs/test-AYf6DmHL/lib/python3.5/types.py", line 166, in <module>

    import functools as _functools

  File "/home/user/.local/share/virtualenvs/test-AYf6DmHL/lib/python3.5/functools.py", line 23, in <module>

    from weakref import WeakKeyDictionary

  File "/home/user/.local/share/virtualenvs/test-AYf6DmHL/lib/python3.5/weakref.py", line 12, in <module>

    from _weakref import (

ImportError: cannot import name '_remove_dead_weakref'

这个问题似乎影响了所有与 python 相关的 Vim 插件。对于其他 Python 版本(例如 3.6.x、3.7.x),不会发生这种情况。什么可能导致这个问题?


更新:似乎当我在 3.5.x virtualenv 中运行 Vim 时,Vim 的解释器sys.path会以某种方式更新。例如,这是:py3 import sys; print(sys.path)3.6.0 virtualenv 内部的输出:


['/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5

/dist-packages', '/usr/lib/python3/dist-packages', '_vim_path_']


这是 3.5.3:


Traceback (most recent call last):

  File "<string>", line 1, in <module>

  File "/home/testuser/.local/share/virtualenvs/venv-3.5-8feRiT5s/lib/python3.5/imp.py", line 19, in <module>

    from importlib._bootstrap import _ERR_MSG, _exec, _load, _builtin_from_name

  File "/home/testuser/.local/share/virtualenvs/venv-3.5-8feRiT5s/lib/python3.5/importlib/__init__.py", line 57, in <module>

    import types


该问题可以在ubuntu:16.04docker 容器中重现。


手掌心
浏览 211回答 3
3回答

繁星coding

尝试使用 sudo 运行 python。我认为操作系统附带的python需要以管理员权限运行。

智慧大石

Debian 错误报告日志 - #852163:python3.5-minimal wont configure表明此错误(对于 Python 3.5 和 Python 3.6)是由于 /usr/local 中另一个不兼容的 Python 安装造成的。与#debian 中遇到此问题的另一位用户进行的进一步挖掘表明,它与本地安装的/usr/local/bin/python3.5 有关。/usr/lib/python3.5 中的 stdlib 被 /usr/local/bin/python3.5 拾取,但与它不兼容,导致显示堆栈跟踪。从 /usr/local/lib(以及其他相关工具)中删除 /usr/local/bin/python3* 和该安装的所有痕迹为我在 #debian 中帮助的用户解决了这个问题。——斯图尔特·普雷斯科特(链接)问题是系统安装了python,与个人安装的python冲突。

UYOU

可能是其他 python 版本在这里干扰的情况。你PYTHONPATH有一套吗?echo&nbsp;$PYTHONPATH如果已设置,您可以尝试取消设置。使用虚拟环境时通常不需要它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python