YouCompleteMe、jedi-vim、SpaceVim报错无法加载库Could not load library python38.dll

本文主要是介绍YouCompleteMe、jedi-vim、SpaceVim报错无法加载库Could not load library python38.dll,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用gVim的时候发现ycm-core/YouCompleteMe插件安装报错:

由于是将Python从3.8升级到3.9之后出现的问题,初步以为是升级Python过程导致的,根据YouCompleteMe的Issue #3765执行了清理Python cache的操作但无济于事。经过调试以为是与zxqfl/tabnine-vim插件冲突了(但其实之前并未出现冲突情况),所以不选择安装YouCompleteMe,暂时正常。

使用SpaceVim+gVim时参考使用 Vim 搭建 Python 开发环境配置并安装Kite对Vim的插件支持等,正常启动gVim,但是打开*.py文件即报错:

更新jedi-vim后报错:执行:verbose JediDebugInfo显示

经查E:\Cadence\SPB_Data\.cache\vimfiles\repos\github.com\davidhalter\jedi-vim\ftplugin\python\jedi.vim的36行

call jedi#configure_call_signatures()

所调用的函数的确在E:\Cadence\SPB_Data\.cache\vimfiles\repos\github.com\davidhalter\jedi-vim\autoload\jedi.vim的第586至606行

function! jedi#configure_call_signatures() abortaugroup jedi_call_signaturesautocmd! * <buffer>if g:jedi#show_call_signatures == 2  " Command line call signaturesautocmd InsertEnter <buffer> let g:jedi#first_col = s:save_first_col()endifautocmd InsertEnter <buffer> let s:show_call_signatures_last = [0, 0, '']autocmd InsertLeave <buffer> call jedi#clear_call_signatures()if g:jedi#show_call_signatures_delay > 0autocmd InsertEnter <buffer> let b:_jedi_orig_updatetime = &updatetime\ | let &updatetime = g:jedi#show_call_signatures_delayautocmd InsertLeave <buffer> if exists('b:_jedi_orig_updatetime')\ |   let &updatetime = b:_jedi_orig_updatetime\ |   unlet b:_jedi_orig_updatetime\ | endifautocmd CursorHoldI <buffer> call jedi#show_call_signatures()elseautocmd CursorMovedI <buffer> call jedi#show_call_signatures()endifaugroup END
endfunction

根据jedi-vim的Issue #1018的启示执行:python3 print(1)发现找不到命令,于是将python.exe复制了一份重命名为python3.exe。

根据jedi-vim的Issue #1038,

Resolved. This was due to vim compilation issue. Closing.

 一开始并不知道这条回复是什么意思,但是回顾转移至SpaceVim的过程中完全代替了原有的配置文件,升级Python过程本身出问题的概率很小,并确认了gVim是三天前刚编译过的分发版本,注意到.vim文件中的!has('python3')条件未通过,jedi-vim的新issue提示中包含

If you are not using jedi-vim from Git (but e.g. from a distribution's package,
please try it with jedi-vim's Git master, too).

根据jedi-vim的README.rst:

You need a VIM version that was compiled with Python 2.7 or later (+python or +python3). You can check this from within VIM using :python3 import sys; print(sys.version) (use :python for Python 2).

执行:python3 import sys; print(sys.version)报错

 而执行:python import sys则不会报错,意识到这的确是vim的编译问题。根据vim-win32-installer的README.md,它是由Python 3.8编译完成的。根据调试上游插件,在相应的init.toml的[options]中加入

disabled_plugins = ["jedi-vim"]

打开*.py文件没有报错。一个侧面印证是NeoVim采用同样的SpaceVim文件夹和init.toml,在用pip安装neovim包后其:checkhealth结果显示:

 其:python命令不能正常执行,而其:python3命令可以正常执行。

这篇关于YouCompleteMe、jedi-vim、SpaceVim报错无法加载库Could not load library python38.dll的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/282213

相关文章

三国地理揭秘:为何北伐之路如此艰难,为何诸葛亮无法攻克陇右小城?

俗话说:天时不如地利,不是随便说说,诸葛亮六出祁山,连关中陇右的几座小城都攻不下来,行军山高路险,无法携带和建造攻城器械,是最难的,所以在汉中,无论从哪一方进攻,防守方都是一夫当关,万夫莫开;再加上千里运粮,根本不需要打,司马懿只需要坚守城池拼消耗就能不战而屈人之兵。 另一边,洛阳的虎牢关,一旦突破,洛阳就无险可守,这样的进军路线,才是顺势而为的用兵之道。 读历史的时候我们常常看到某一方势

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

centos 6安装 vim

centos 安装vim 1.首先查询当前当前vim所依赖的包存在不存在.检查缺少哪个几个依赖包 [root@bogon firstCopy]# rpm -qa|grep vivimvim-common-7.4.160-5.el7.x86_64vim-enhanced-7.4.160-5.el7.x86_64vim-filesystem-7.4.160-5.el7.x86_64vim-

使用Qt编程QtNetwork无法使用

使用 VS 构建 Qt 项目时 QtNetwork 无法使用的问题 - 摘叶飞镖 - 博客园 (cnblogs.com) 另外,强烈建议在使用QNetworkAccessManager之前看看这篇文章: Qt 之 QNetworkAccessManager踏坑记录-CSDN博客 C++ Qt开发:QNetworkAccessManager网络接口组件 阅读目录 1.1 通用API函数

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed 文章目录 DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed问题解决办法 问题 使用 DBeaver 连接 MySQL 数据库的时候, 一直报错下面的错误 Public Key Retrieval is

类的load方法和initialize方法对比

1. load方法在main()之前被调用,而initialize方法在main()之后调用 load方法实际是在load_images过程中被调用的。load_images会将当前应用依赖的所有镜像(动态库)加载到内存,在在加载中首先是对镜像进行扫描,将所有包含 load 方法的类加入列表 loadable_classes ,然后从这个列表中逐一调用其所包含的 load 方法。 +[XXCl