我在 ycm 中使用 anaconda python 作为我的 python 解释器来解决这个问题。
首先我根据full pythong setting in vim修改了我的vimrc。
然后我把g:ycm_python_interpreter_path改成
let g:ycm_python_interpreter_path = '/usr/local/anaconda3/bin/python3.8'
这样我没有改变系统环境变量。
附加信息 1:
我认为主要的问题是,
我的 YCM 的 Python 解释器是我的系统 python (/usr/local/opt/python@3.9/bin/python3.9),
它只有有限的本地构建的库。
所以使用anaconda自带的库(/usr/local/anaconda3/bin/python3.8)就可以解决。
附加信息 2:
通过阅读:YcmDebugInfo,编辑g:ycm_python_interpreter_path后的主要区别在于:
-- Python completer debug information:
-- Python interpreter: /usr/local/opt/python@3.9/bin/python3.9
-- Python path: ['/usr/local/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python39.zip', '/usr/local/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9', '/usr/local/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/site-packages']
-- Python version: 3.9.6
改成
-- Python completer debug information:
-- Python interpreter: /usr/local/anaconda3/bin/python3.8
-- Python path: ['/usr/local/anaconda3/lib/python38.zip', '/usr/local/anaconda3/lib/python3.8', '/usr/local/anaconda3/lib/python3.8/lib-dynload', '/usr/local/anaconda3/lib/python3.8/site-packages', '/usr/local/anaconda3/lib/python3.8/site-packages/aeosa', '/usr/local/anaconda3/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg']
-- Python version: 3.8.8
附加信息 3:关于如何读取本地安装的 pyton 模块列表
使用https://stackoverflow.com/a/740018/11226687
例如就我而言
$ /usr/local/opt/python@3.9/bin/python3.9
>>> help('modules')
# only return limitted modules
$ /usr/local/anaconda3/bin/python3
>>> help('modules')
# list out all the modules included in Anaconda, including numpy/matplotlib/scipy ect