栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

SpaceVim + Anaconda + vimspector 实现python调试

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpaceVim + Anaconda + vimspector 实现python调试

目录
  • 前言
  • 安装vim
    • 下载vim
    • 进行配置
    • 问题解决
    • 确认安装成功
  • 安装SpaceVim
    • 搭建python环境
  • 安装vimspector
    • 小tips
  • 最后

前言

最近电脑出了问题,懒得修了直接重装了Ubuntu,所以环境就要从头开始配。写这篇文章主要是为了以后再重装系统的时候,不用这么焦头烂额的重新配环境。下面我们开始,先贴出环境。

 vim 8.2
 python 3.8.8 (Anaconda)
 Ubuntu  20.04.1

此处注意笔者的Python是Anaconda自带的,Anaconda和vim配合好像会出现bug,后文会提到,所以说不建议使用Anacoda来配置Vim。

安装vim

这里介绍如何安装vim8.2,因为vimspector要求的vim版本要不低于8.2,Ubuntu自带的vim版本为8.1,所以需要手动安装。

下载vim
$ git clone https://github.com/vim/vim.git
进行配置
$ cd vim
$ ./configure --enable-multibyte --enable-python3interp=yes --with-python3-config-dir=/home/lqz/anaconda3/lib/python3.8/config-3.8-x86_64-linux-gnu
$ make
$ sudo make install

我不小心将当时的./configure配置删除了,所以配置命令是凭回忆写的,在这里贴出./configure文件的配置参数意义

--with-features:支持最大特性
--enable-multibyte:打开中文输入的支持
--enable-rubyinterp:打开对ruby编写的插件的支持
--enable-pythoninterp:打开对python编写的插件的支持
--with-python-config-dir: 指定python路径
--enable-python3interp:打开对python3编写的插件的支持
--with-python-config-dir: 指定python3路径
--enable-perlinterp:打开对perl编写的插件的支持
--enable-luainterp:打开对lua编写的插件的支持
--enable-gui=gtk2:gtk2支持,也可以使用gnome,表示生成gvim
--enable-cscope:打开对cscope的支持
--prefix:指定将要安装到的路径(自行创建)

此处配置及说明参考CentOS编译安装vim8并支持python3。

问题解决

不出意外的话,使用Anaconda的朋友应该会遇到一个fatal error:

lto1: fatal error: bytecode stream generated with LTO version 6.2 instead of the expected 6.0

一开始去百度这个问题,让降级gcc,尝试了gcc7、8、9都还是在报错,而且上面的版本号会变化,错误格式是不变的。两个version始终对不上。然后去stackoverflow上,让禁用lto,使用选项-fno-lto,还是根本不起作用。走投无路谷歌去了,然后在Anaconda的Github中issue#6619发现了和我同样的问题,这个应该算是Anaconda的一个隐藏bug。具体链接贴在这里 Possible problem with LTO on Anaconda 5.0 #6619 ,外国人还是非常认真,每个问题都仔细回复,篇幅和精力有限,仅在此贴出解决方案。
导致出现这个问题的原因是Anaconda使用自己的编译器,而不是我们通过sudo apt install gcc得到的内置gcc,安装对应的编译器命令为

$ conda install gxx_linux-64

随后修改vim/src/auto/config.mk 中的LDFLAGS变量

LDFLAGS ?=
LDFLAGS += -L/usr/local/lib

然后使用

$ make distclean

命令清空之前的配置,重新运行./configure以及make即可。
睡了一觉之后印象不是很深,还是要多记录,解决方案是

顺便贴出我的configure.mk文件LDFLAGS部分

确认安装成功

此时运行

$ vim --version

查看vim版本发现已经是8.2版本,并且支持python3。
要注意的是,在设置./configure文件时,只能设置python3支持,python2的支持不能设置,vim只能支持编译一种python,有的教程中会同时配置两种,最后vim --version的结果就是+python/dyn +python3/dyn,dyn是dynamic的缩写,即动态支持,这种情况vim还是会报错的。

安装SpaceVim

根据SpaceVim官方中文文档中提供的下载安装命令安装即可。

$ curl -sLf https://spacevim.org/cn/install.sh | bash

随后运行vim可以看到已经变成了SpaceVim

搭建python环境

打开~/.SpaceVim.d/init.toml文件,加入如下命令

[[layers]]
  name = "lang#python"

即完成了对python环境的支持。
至此其实python环境已经搭建完成,SpaceVim文档中有关于内置调试器的介绍,但是内置调试器有bug,只能显示第一行结果,这在其github上有人提了一个issue,但是并没有解决( eval only shows first line #62 )。这对于我这种编程新手来说不是很方便,尤其是训练神经网络关键部分看不到就失去了调试的意义,所以便尝试使用vimspector。

安装vimspector

首先给出vimspector的项目地址,内容非常详尽。具体的配置以及使用在这里就不做枯燥的翻译工作了。
再给出一篇我第一次配置时参考过的博客Vim 最强调试插件:vimspector,帮了我很大的忙。
在这里将vimspector直接作为SpaceVim的插件安装,在init.toml文件中加入

[[custom_plugins]]
    repo = "puremourning/vimspector"
    merged = false

打开SpaceVim会看到插件已经完成安装。
此时启动debug程序还太早,因为缺少必要的.vimspector.json文件,为了检查我们是否配置有误,vimspector提供给我们测试程序,进入测试程序所在文件夹

$ cd /home/lqz/.cache/vimfiles/repos/github.com/puremourning/vimspector/support/test/python/simple_python

其中的main.py即为测试程序,.vimspector.json为配置文件。执行

:call vimspector#Launch()

选择第五项run,就会启动调试器并输出结果
这样就意味着我们的环境配置成功,根据github上的提示进行具体的变量配置以及个性设置就ok了。

小tips
  1. 安装debugpy
    初次打开vimspector可能会提示没有debugpy,先尝试官方命令
:VimspectorInstall debugpy

我使用命令的时候一直提示和远程服务器失去连接,只要将它需要下载的v1.2.1zip自己下载到对应的文件夹中就ok了,网址以及目标文件夹报错信息中都有。

  1. 个性化设置
    官网中设置HUMAN MODE无法直接在init.toml文件中设置,参考SpaceVim中的启动函数章节,在bootstrap_before函数中添加let g:vimspector_enable_mappings = 'HUMAN‘即可完成映射。
最后

笔者也是新研究生,研究生还在捣鼓入门的东西好像菜了点,第一次写博客好多关键点感觉没有写出来,但是由于没有记录,也只有这些了,希望能给和我遇到同样问题的朋友提供一点帮助。最后还是想说,谷歌yyds!欢迎给我提出建议~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/348753.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号