我pyenv在 Ubuntu 16.04 上安裝了多個 Python 版本。我創建了虛擬環境來處理使用不同版本的項目pipenv。然而,為Python 3.5.x的只有我得到這樣的錯誤,當我嘗試用Vim編輯8(通過安裝的文件PPA)在激活的virtualenv:"test.py" 49L, 1434CError 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 容器中重現。
3 回答

智慧大石
TA貢獻1946條經驗 獲得超3個贊
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
TA貢獻1878條經驗 獲得超4個贊
可能是其他 python 版本在這里干擾的情況。你PYTHONPATH
有一套嗎?
echo $PYTHONPATH
如果已設置,您可以嘗試取消設置。使用虛擬環境時通常不需要它。
添加回答
舉報
0/150
提交
取消