作者:Chancel Yang, 创建:2019-09-18, 字数:3552, 已阅:15, 最后更新:2019-09-18
使用Python开发项目经常会遇到不同项目使用不同的Python版本
而且这些版本还要用到不少第三方的PYPI的包,这些包又有不同的版本
这样在卸载或者更新一些第三方pip包时,有老项目运行不起来的风险
这个时候,我们就需要使用Pyenv+Venv来为每一个项目独立自己的项目开发环境
以下过程基于Debian10发行版,Ubuntu/Debian发行版通用,只是包名略有不同,对于Redhat发行版可能就不太通用的,许多包需要自行编译
Pyenv用于解决不同项目不同Python版本问题,相较于自行编译安装不同Python版本的好处
使用pyenv时,对于每一个项目,执行入口方法时都是 python3 main.py
而自行编译安装,则需要将安装后的Python软链接至/usr/bin下,在执行项目入口方法时还要区分不同的版本,2个不同项目的启动命令可能会如下
这样做不利于区分什么项目使用什么版本的解释器,会比较麻烦,而pyenv能很好的解决这个问题
安装pyenv
➜ sudo apt -y install git gcc libgdbm-dev make patch zlib1g.dev libssl-dev libsqlite3-dev libbz2-dev libreadline-dev
➜ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
在安装完成后,脚本会提示需要添加环境变量,请按照提示操作,下面是例子
➜ vim ~/.zshrc
# 添加类似于下面的换将变量
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
安装完成之后,根据需要安装Python版本,这里暂且假设需要使用3.7.1
➜ pyenv install 3.7.1
接着可以使用下面的指令来指定某个项目的Python版本,这里假设要指定项目 /srv/demo 项目
➜ cd /srv/demo
➜ pyenv local 3.7.1
检查一下当前项目的Python版本
➜ demo pwd
/srv/demo
➜ python -V
Python 3.7.1
以下是pyenv的常用命令
# 所有可安装的版本列表
pyenv install -list
# 下载制定版本的Python
pyenv install 3.6.9
# 查看当前已下载的版本
pyenv versions
# 设置系统的Python版本
pyenv global 3.6.9
# 设置当前目录为某个Python版本
pyenv local 3.6.9
# 更新pyenv
pyenv update
有了Pyenv,我们可以方便的卸载安装多个Python版本,无需手动编译安装,方便快捷
设置好了Python版本,这个时候如果我们使用pip安装第三方包,会发现这些包依旧是安装在用户路径的.local路径下
在实际开发中,我们是希望直接安装在当前项目目录下更好一些
这个时候我们就需要使用venv虚拟环境了
可以使用如下指令创建虚拟环境
➜ python3 -m venv .env
上面这个指令会在当前目录下创建一个.env的文件夹,其中包含了所需的Python虚拟环境以及当前默认的Python版本
紧接着,激活这个Python环境
➜ source .env/bin/activate
激活成功之后在命令提示符前面会出现 (.env) 的标志,检查一下pip程序的路径
(.env) ➜ pip -V
pip 21.0.1 from /srv/demo/.env/lib/python3.9/site-packages/pip (python 3.9)
尝试一下安装 requests,然后检查一下 .env/lib/python3.9/site-packages,可以看到requests包位于此处
这样虚拟环境便搭建完成了
在项目开发完毕之后,为了方便协作开发,可以导出项目依赖文件 requirements.txt,不用再麻烦地将第三方引用包写在 README.me文件中
pip3 freeze > requirements.txt
如上,配置完成后,我们的项目具有了虚拟的配置环境,无论是Python的版本还是pip导入的第三方包均位于当前项目下.env文件夹中
打开Visual Studio Code后,可以点击左侧的DEBUG标志
点击 create a launch json file 创建一个DEBUG的配置文件,选择Python或者具体的项目框架
在项目根目录生成的.vscode/launch.json文件中更改Python解释器
提示:python这个键的值可以指定Python解释器,如下文中的 ${workspaceRoot}/.env/bin/python3
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Flask",
"type": "python",
"request": "launch",
"module": "flask",
"port": 5001,
"host": "0.0.0.0",
"python": "${workspaceRoot}/.env/bin/python3",
"env": {
"FLASK_APP": "${workspaceRoot}/src/main.py",
"FLASK_ENV": "development",
"FLASK_DEBUG": "1",
},
"args": [
"run",
"--no-debugger",
"--no-reload",
],
"jinja": true
}
]
}
Vscode有非常多好用的第三方扩展插件,基本搜索一下python,star数高的都是非常值得尝试的插件扩展,这里列出常用的几个
以上搭建结合Visual Studio Code的远程SSH开发,太舒服了