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

相关文章

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明

Idea实现接口的方法上无法添加@Override注解的解决方案

《Idea实现接口的方法上无法添加@Override注解的解决方案》文章介绍了在IDEA中实现接口方法时无法添加@Override注解的问题及其解决方法,主要步骤包括更改项目结构中的Languagel... 目录Idea实现接China编程口的方法上无法添加@javascriptOverride注解错误原因解决方

MySQL报错sql_mode=only_full_group_by的问题解决

《MySQL报错sql_mode=only_full_group_by的问题解决》本文主要介绍了MySQL报错sql_mode=only_full_group_by的问题解决,文中通过示例代码介绍的非... 目录报错信息DataGrip 报错还原Navicat 报错还原报错原因解决方案查看当前 sql mo

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3