Win10+VSCode+WSL开发Python程序

Win10+VSCode+WSL开发Python程序

Win10+VSCode+WSL开发Python程序_第1张图片

图源:ubuntu.com

基础环境:

如标题所言,开发环境需要Win10、VSCode、WSL:

  • 如果没有Win10,那可以洗洗睡了。
  • 如果没有VSCode,可以阅读推荐一个IDE——VSCode
  • 如果没有WSL,可以阅读Windows Sub Linux 体验

此外需要说明的是,我之前安装的WSL是Debian,优点是占的空间小,但我发现缺少很多工具,而且软件源中的软件也很少,安装Python不是很方便,所以我卸载后重新安装了Ubuntu,下面的内容都是在WSL Ubuntu中操作的。

使用VSCode连接WSL

先确保vscode已经安装了Remote-WSL扩展:
Win10+VSCode+WSL开发Python程序_第2张图片

如果没有就安装。

然后在WSL中定位到工程目录并使用code命令尝试使用vscode打开工程:

icexmoon@icexmoon-book:/mnt/d$ cd workspace/python/
icexmoon@icexmoon-book:/mnt/d/workspace/python$ code file-remark/
ERROR: Failed to download the VS Code server. 'wget' not installed.
Please install wget:
Debian/Ubuntu: sudo apt-get install wget

我这里遇到报错,提示需要使用wget下载VS Code server这个必须组件,那就先安装wget

icexmoon@icexmoon-book:/mnt/d/workspace/python$ sudo apt-get install wget
[sudo] password for icexmoon:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  ca-certificates libpcre2-8-0 libpsl5 openssl publicsuffix
The following NEW packages will be installed:
...省略
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

再次尝试使用vscode打开WSL上的工程:

icexmoon@icexmoon-book:/mnt/d/workspace/python$ code file-remark/
Updating VS Code Server to version 7f6ab5485bbc008386c4386d08766667e155244e
Removing previous installation...
Installing VS Code Server for x64 (7f6ab5485bbc008386c4386d08766667e155244e)
Downloading: 100%
Unpacking: 100%
Unpacked 1828 files and folders to /home/icexmoon/.vscode-server/bin/7f6ab5485bbc008386c4386d08766667e155244e.

这次一切正常:

Win10+VSCode+WSL开发Python程序_第3张图片

可以看到标题是xxx [WSL:Debian]

在WSL中准备Python环境

确认WSL上的Python环境:

icexmoon@icexmoon-book:~/workspace/python$ python3 --version
Python 3.8.10

更新Python版本:

这使用第三方软件源PPA进行安装最新版本Python,也可以自行编译或者通过其它途径安装。

  1. 安装PPA软件源:
icexmoon@icexmoon-book:~/workspace/python/file-remark$ sudo apt install software-properties-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
...省略
icexmoon@icexmoon-book:~/workspace/python/file-remark$ sudo add-apt-repository ppa:deadsnakes/ppa
 This PPA contains more recent Python versions packaged for Ubuntu.
...省略
icexmoon@icexmoon-book:~/workspace/python/file-remark$ sudo apt-get update
Hit:1 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu focal InRelease
Hit:2 http://archive.ubuntu.com/ubuntu focal InRelease
Hit:3 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:4 http://archive.ubuntu.com/ubuntu focal-updates InRelease
Get:5 http://archive.ubuntu.com/ubuntu focal-backports InRelease [101 kB]
Fetched 101 kB in 3s (32.9 kB/s)
Reading package lists... Done
  1. 从PPA软件源安装Python:
icexmoon@icexmoon-book:~/workspace/python/file-remark$ sudo apt install python3.9-full
Reading package lists... Done
Building dependency tree
Reading state information... Done
...省略
icexmoon@icexmoon-book:~/workspace/python/file-remark$ python3 --version
Python 3.8.10
  1. 修改默认的python命令指向python3.9
icexmoon@icexmoon-book:~/workspace/python/file-remark$ ll /usr/bin/python*
lrwxrwxrwx 1 root root      16 Sep 29 14:39 /usr/bin/python -> /usr/bin/python3*
lrwxrwxrwx 1 root root       9 Mar 13  2020 /usr/bin/python3 -> python3.8*
-rwxr-xr-x 1 root root 5490352 Jun  2 18:49 /usr/bin/python3.8*
-rwxr-xr-x 1 root root 5405872 Sep 10 07:20 /usr/bin/python3.9*
icexmoon@icexmoon-book:~/workspace/python/file-remark$ sudo rm -f /usr/bin/python3
icexmoon@icexmoon-book:~/workspace/python/file-remark$ sudo ln -s /usr/bin/python3.9 /usr/bin/python3
icexmoon@icexmoon-book:~/workspace/python/file-remark$ python3 --version
Python 3.9.7

如果没有pip就安装:

icexmoon@icexmoon-book:~/workspace/python$ pip

Command 'pip' not found, but can be installed with:

sudo apt install python3-pip

icexmoon@icexmoon-book:~/workspace/python$ sudo apt install python3-pip
Reading package lists... Done
Building dependency tree
Reading state information... Done
...省略
icexmoon@icexmoon-book:~/workspace/python$ pip --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

如果安装pip时出现错误,提示缺少依赖之类的可以尝试使用sudo apt update;sudo apt upgrade更新后再尝试安装。

安装python的虚拟环境venv(可选):

icexmoon@icexmoon-book:~/workspace/python$ sudo apt install python3-venv
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
...省略

检查VSCode的插件Python,该插件会出现一个在WSL:ubuntu中安装的选项,进行安装,安装完毕后重新加载插件。

Win10+VSCode+WSL开发Python程序_第4张图片

然后就可以使用VSCode在WSL中远程调试Python程序了。

总结

折腾了两个多小时,遇到了各种坑,总算是搞定了。在这里总结一下使用这种方式而非直接在Linux上开发的优缺点。

优点:

  • 可以使用Windows上熟悉的工具,比如VSCode以及SQLite Expert等。虽然说VSCode也有Linux版本,但是应该也还是有一些差别的,如果使用WSL就完全不存在类似的工具不顺手的问题,减少了不必要的时间花费。
  • 开发环境可以直接使用Windows下的工程目录,减少了文件拷贝和额外搭建开发环境的时间。

缺点:

  • WSL同样需要考虑各种Linux发行版的差异带来的软件安装的各种困难和问题。
  • 个别Linux发行版的WSL(如Debian)过于精简,以至于缺少一些必要的工具。

总的来说使用这样的方式开发或测试应用于Linux下的Python程序都是一个不错的选择。

参考资料

  • 优雅地使用VSCode与WSL在Windows 10下开发
  • win10怎么卸载wsl子系统
  • WSL+Anaconda+VS code 搭建python环境
  • deadsnakes软件源介绍以及在Ubuntu上安装最近版本Python的方法

你可能感兴趣的:(Python,vscode,python,WSL,Win10,Linux)