【原创】code-server 为项目设置 Python 虚拟环境

概要

1、简介

使用 code-server 来开发 python 项目,一般都会使用虚拟环境来做环境隔离,这样每个项目的依赖库都是单独的,不会与其他项目混淆或者冲突。

那么,code-server 开发 python 项目的时候,怎么给不同的项目设置其指定的虚拟环境呢?

code-server 毕竟不是专门的 python IDE。因此,不能自动识别并配置 virtualenv 环境。那我们应该怎样配置 virtualenv 呢?请看下文。

2、相关环境

Ubuntu 18.04.5
Python 3.6.9 64-bit
code-server 3.5.0

正文

1、安装 python extension

点击左下角的齿轮 -> Extensions -> 搜索 "Python" -> 选择搜索到的 python extension -> 点击右侧的 Install 进行安装。

2、添加一个目录到工作空间

第一次打开的 code-server 应该就是如下的界面,可以看到显示的是没有打开的目录,还没有添加一个目录到这个工作空间。

比如我在 ~/workspace 下创建了一个 my_project 的目录,这个目录作为我的项目的根目录。我可以点击 "Add Folder" 按钮将我刚才创建的 my_project 目录添加到当前工作空间

添加后可以看到如下的界面

3、在 my_project 下编写 python 代码

在 my_project 目录下新建一个 app.py 文件,编写如下代码

# -*- coding:utf-8 -*-
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
    return 'This is my project index!'
app.run(host='127.0.0.1', port=5000)

这时候,我们选中 app.py 会发现左下角已经出现了 Python 3.6.8 64-bit,也就是说我们安装的 Python extension 扩展已经帮我们选择了系统中安装的 Python 环境。

但这时如果你想运行代码,不出意外是运行不起来的,除非你本地的 Python 环境已经安装了 flask 插件。可以看到下方的 from flask import Flask 处已经提示导入报错的信息了。

如果你非要现在就运行,那么你可以在命令行运行 pip3 install flask 安装 flask 也可以运行。但不推荐这样,因为系统中的环境我们最好只用来作为基础环境,我们项目用到的项目单独创建并隔离。

这样可以防止不同项目用到不到依赖版本时不会相互冲突,这里我们使用 Python 虚拟环境来做环境隔离,请参考下一节内容。

4、创建一个项目独有的 Virtualenv 环境

因为常见的做法是每个项目的 Python 运行环境,依赖的三方库独立存在。因此,我们创建为项目创建一个 Virtualenv 环境。

选中项目目录 -> 右键 “Open in integrated Terminal” -> 在下方就能进入 Terminal 窗口

然后我们可以通过如下命令创建一个 Virtualenv 环境。

virtualenv --python=python3 venv

注:

a. 其中 virtualenv 是一个第三方库,不是 python 自带的库。因此需要我们先安装此工具

pip3 isntall virtualenv -i https://pypi.douban.com/simple

b. 上面的命令的意思是使用系统中安装的 python3 作为虚拟环境的 python 解释器,并在当前目录创建了一个叫做 venv 的目录,该目录用于存放 python 解释器可执行程序,python 自带类库,安装的第三方库类等。

示例:

$ virtualenv --python=python3 venv
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/jiangzl/workspace/my_project/venv/bin/python3
Also creating executable in /home/jiangzl/workspace/my_project/venv/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ ll
total 16
drwxrwxr-x 3 jiangzl jiangzl 4096 Sep 12 12:34 ./
drwxr-xr-x 5 jiangzl jiangzl 4096 Sep 11 13:27 ../
-rw-r--r-- 1 jiangzl jiangzl  178 Sep 11 13:36 app.py
drwxr-xr-x 6 jiangzl jiangzl 4096 Sep 12 12:34 venv/

或者

python3 -m venv ./venv

示例:

$ python3 -m venv ./venv
$ ll
total 16
drwxrwxr-x 3 jiangzl jiangzl 4096 Sep 12 12:34 ./
drwxr-xr-x 5 jiangzl jiangzl 4096 Sep 11 13:27 ../
-rw-r--r-- 1 jiangzl jiangzl  178 Sep 11 13:36 app.py
drwxr-xr-x 6 jiangzl jiangzl 4096 Sep 12 12:34 venv/

注:

a. 使用 python3 -m venv ./venv 与使用 virtualenv 命令的结果是相同的,都是在当时目录创建一个虚拟环境的目录叫做 venv。

b. -m 后的 venv 指的是 python3 自带的库叫做 venv,这个库是 python 3.3 版本才成为了 python3 的官方自带的库,所以如果你的 python3 版本是 python 3.3 +,建议使用下面的命令。而且使用下面 python3 venv 的命令要比使用 virtualenv 命令快很多。

参考官方文档说明:

https://docs.python.org/3/whatsnew/3.3.html#pep-405-virtual-environments

5、选择项目的解释器环境

点击左下角状态栏的 "Python 3.6.9 64-bit" -> my_project -> "Python 3.6.9 64-bit ('venv')"

注:

上面点击左下角状态栏的 Python Interpreter 的操作也可以使用 code-server 的命令来实现,MacOS 环境使用 command + shift + p 打开全局命令窗口,输入如下命令选择第一个匹配项就可以达到上面相同的操作。

python: select interpreter

6、.vscode 

当我们选择了虚拟环境后,会发现在 my_project 下面多了一个 .vscode 的目录,里面有一个 settings.json 的文件,打开发现里面纪录了我们配置的信息

所以我们也可以自己创建 .vscode 目录和 setting.json 文件,在里面配置这些信息也可以。

7、设置 linter

从上面图可以看到,选择了 venv 后,会提示 Linter pylint is not installed,这个是 Python 的语法提示与检查的插件,如果你不需要直接点击 Do not show again 即可。

但是建议使用 pylint 来检查代码的风格,规范等。有助于提高代码质量。点击 Install 即可安装,如果已经有 pylint,直接点击 Slect Linter 选择 pylint 即可。

同样,上面的操作可以使用命令完成,如下所示,具体方法与上面 select interpreter 一致,不再赘述。

Python: Select Linter

8、进入虚拟环境

右键点击 my_project  -> "Open in Integrated Terminal" 即可进入激活的 venv 环境 

9、运行

安装 flask 依赖

(venv) $ pip3 install flask
Collecting flask
  Downloading https://files.pythonhosted.org/packages/f2/28/2a03252dfb9ebf377f40fba6a7841b47083260bf8bd8e737b0c6952df83f/Flask-1.1.2-py2.py3-none-any.whl (94kB)
    100% |████████████████████████████████| 102kB 174kB/s 
Collecting itsdangerous>=0.24 (from flask)
  Downloading https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
Collecting Jinja2>=2.10.1 (from flask)
  Downloading https://files.pythonhosted.org/packages/30/9e/f663a2aa66a09d838042ae1a2c5659828bb9b41ea3a6efa20a20fd92b121/Jinja2-2.11.2-py2.py3-none-any.whl (125kB)
    100% |████████████████████████████████| 133kB 350kB/s 
Collecting Werkzeug>=0.15 (from flask)
  Downloading https://files.pythonhosted.org/packages/cc/94/5f7079a0e00bd6863ef8f1da638721e9da21e5bacee597595b318f71d62e/Werkzeug-1.0.1-py2.py3-none-any.whl (298kB)
    100% |████████████████████████████████| 307kB 3.3MB/s 
Collecting click>=5.1 (from flask)
  Downloading https://files.pythonhosted.org/packages/d2/3d/fa76db83bf75c4f8d338c2fd15c8d33fdd7ad23a9b5e57eb6c5de26b430e/click-7.1.2-py2.py3-none-any.whl (82kB)
    100% |████████████████████████████████| 92kB 444kB/s 
Collecting MarkupSafe>=0.23 (from Jinja2>=2.10.1->flask)
  Downloading https://files.pythonhosted.org/packages/b2/5f/23e0023be6bb885d00ffbefad2942bc51a620328ee910f64abe5a8d18dd1/MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl
Installing collected packages: itsdangerous, MarkupSafe, Jinja2, Werkzeug, click, flask
Successfully installed Jinja2-2.11.2 MarkupSafe-1.1.1 Werkzeug-1.0.1 click-7.1.2 flask-1.1.2 itsdangerous-1.1.0

点击右上角的三角即可运行

10、访问

总结

以上是介绍了通过 code-server 的网页版本来开发 python 项目的流程以及需要用到相关设置,这些内容也适用于 visual studio code。

You may also like...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注