IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> SpaceVim + Anaconda + vimspector 实现python调试 -> 正文阅读

[开发工具]SpaceVim + Anaconda + vimspector 实现python调试

前言

最近电脑出了问题,懒得修了直接重装了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部分
LDFLAGS变量

确认安装成功

此时运行

$ vim --version

查看vim版本发现已经是8.2版本,并且支持python3。
vim结果要注意的是,在设置./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
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为配置文件。main.py内容执行

: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!欢迎给我提出建议~

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-10-24 15:05:58  更:2021-10-24 15:06:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/23 18:46:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计