一、前言
Visual Studio Code 是一款开源的 IDE 开发工具,以下简称 VSCode,它是基于 ElectronJS 开发、具有 web 技术栈的开发优势,比如界面开发效率高、设计美观、生态开放等,因此产生了大量免费的插件,就 python 开发而言,目前已经可以用 VSCode 加上各种 Python 插件实现非常高级的开发功能,完全可以替代 PyCharm 了。这里将记录我日常使用 VSCode 开发 python 项目的一些技术心得,与大家分享、备忘。
二、让 VSCode 的终端识别 Anaconda
Python 项目开发少不了用到 Anaconda,而要想打开 VSCode 的 Terminal (终端) 后,能够输入 conda activate <环境名>
切换到指定的 anaconda 环境,需要先让 Anaconda 初始化一下环境,方法是打开 VSCode 的执行命令:
conda init
然后再执行 conda activate <环境名>
就可以了。
另外,打开‘终端(Terminal)面板’的快捷键是Control+J
。
三、VSCode 的 jupyter 插件使用
VSCode 有一个 Jupyter 插件,可以用来编写 Jupyter Notebook,但运行 notebook 时会报错:
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-2-781b19ee0a2a> in <module>
----> 1 import pandas as pd
2 import matplotlib.pyplot as plt
3
4 # 数据
5 data = {'x': [1, 2, 3, 4, 5], 'y': [1, 4, 9, 16, 25]}
e:\anaconda3\envs\py36\lib\site-packages\pandas\__init__.py in <module>
15 if missing_dependencies:
16 raise ImportError(
---> 17 "Unable to import required dependencies:\n" + "\n".join(missing_dependencies)
18 )
19 del hard_dependencies, dependency, missing_dependencies
ImportError: Unable to import required dependencies:
numpy:
IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!
Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.
...
and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.
Original error was: DLL load failed: 找不到指定的模块。
这个问题不知道是什么原因造成的,有一个解决方法是使用远程、在命令行终端启动的 jupyter notebook 内核。
方法是:
- 在命令行中启动 jupyter notebook。
conda activate py3jupyter
jupyter notebook
- 在 VSCode 的 Jupyter 编辑器中选择“Remote Kernel”,输入IP:127.0.0.1,连接即可。
然后复制命令行终端的 URL 地址,一定要带上末尾的 token,输入‘显示名 127.0.0.1’ ,再选择默认的 kernel 像下面这样:
就可以用 Jupyter 插件运行 Notebook 了,如下。
和浏览器版本的 Jupyter Notebook 相比,使用 VSCode 的 Jupyter 插件有个好处,就是可以很方便地查看变量和矩阵数据。
四、配置 git 的免密访问
VSCode 的 git 插件依赖 git 客户端工具 git bash
,而这个工具在 Windows 下无法记录密码,每次访问 git 仓库时都会询问密码,导致无法在 VSCode 中使用 git 的 push、pull 等远程仓库访问命令。
解决办法是使用 git 的 ssh 协议即 git 协议访问远程仓库而不是 http/https 协议,并利用 ssh 的证书进行身份验证,这样就可以不用每次都输入密码了。
整个解决方案的大体步骤如下:
- 安装 Windows 版本的
git bash
。 - 在 Windows 版本的
git bash
终端里用ssh-key-gen
生成公私秘钥对文件。 - 将公钥写入 git 服务器的
authorized_keys
文件中。
需要注意的要点:
1、确保 VSCode 所使用的是 git bash
。可以查看 PATH 环境变量中是否 git bash
的路径在其他 git 程序前面。
2、确保 git bash
的 ssh-agent
已经启动。没有启动的话用 eval "$(ssh-agent -s)"
命令启动一次。注意,启动 ssh-agent 只有用 ssh-add 命令添加、查看秘钥时才需要,其他时候可以不启动。
3、确保秘钥对已经添加到 ssh-agent 了。方法是用 ssh-add -l
命令查看,这里的 -l
是 list 的首字母 l
。如果没有看到有效的秘钥对,那么就用 ssh-add ~/.ssh/id_rsa
和 ssh-add ~/.ssh/id_ed25519
添加一次。
4、问题排查。当遇到VSCode的git要求输入密码时,可以用下面的步骤排查问题。
是否启动了 ssh-agent
进入 `git bash` ,用 `ssh-add -l` 查看是否已经添加了密钥对。
用 `ssh -vT <用户名>@<IP、域名>` 连接 git 服务器,查看是否能正常登录。
如果系统中有多个 OpenSSH 安装,要确保各自的 ssh-agent 、ssh-add 都添加了密钥对。
要想知道 ssh-agent 是否是 git bash 的,办法就是在 windowws 的任务管理器
中右键点击要查看的ssh-agent
进程,选择打开文件的路径
来查看这个 ssh-agent 是属于哪个 Open-SSH 安装程序的。
五、安装一些好用的扩展(extensions)
对于 VSCode 的 python 开发环境,我们需要先安装一些扩展,下面是我用到的一些扩展,(1)和(2)都是必须的,(3)可以用来列出 已经安装的 Anaconda 或者 VirtualEnv 的可用虚拟环境,方便查看。
另外,还有就是 Jupyter Notebook 相关扩展,见下面的(4),它是一个扩展包,包括好几个 jupyter 相关的扩展,装它一个就可以了。
查看矩阵等对象的扩展“Data Wrangler”。