使用虚拟环境部署Python项目

Virtualenv

为什么使用虚拟环境

开发部署Python程序时,对Python程序的版本要求不同,不同项目需要的依赖不同会导致依赖冲突,所以需要一个沙箱环境对依赖进行隔离,所以每个应用应当应用一套独立的运行环境,这样每个项目不会互相干扰导致冲突崩溃.

Python有很多虚拟化方案.,比如

  • pipenv
  • virtualenv
  • conda

在这里我们介绍的是virtualenv,pipenv相较于virtualenv复杂,conda自带太多不必要的额外负担.

使用方式

安装

在使用virtualenv之前,我们需要安装该工具

mac/Linux: pip3 install virtualenv

Win: pip install virtualenv

使用

假设我们需要开一个新的Python项目.可以这么做

Step 1:

创建目录

1
2
mkdir demoProject
cd demoProject

Step2:

创建独立的Python运行环境,命名为demoVenv

virtualenv demoVenv

avatar

这样我们就得到了一个完整的python虚拟环境,而且系统内已有的python第三方库不会复制过来

Step3:

进入虚拟环境

source demoVenv/bin/activate

注意此时命令提示前缀发生了变化

image-20200321154508718

在此虚拟环境下,可以正常安装第三方库

Step4:

将项目放置于虚拟环境目录下

image-20200321155529483

Step5:

退出虚拟环境

deactivate即可

实战

我们使用fastapi作为例子演示虚拟环境的使用

首先在虚拟环境目录下建立main.py文件

image-20200321155945881

安装fastapi所需依赖

pip3 install fastapi

pip install uvicorn

可以使用pip list命令查看当前虚拟环境中存在的包

image-20200321160338865

进入虚拟环境

1
2
cd demoProject
source demoVenv/bin/activate

image-20200321160134730

编辑main.py内容

1
2
3
4
5
6
7
8
from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
return {"Hello": "World"}

运行

uvicorn main:app —reload

image-20200321160438436

打开浏览器,成功运行,项目部署成功

虚拟环境的迁移

使用虚拟环境对于Python项目的另一个好处就是可以便捷迁移项目

使用pip3 freeze > requirement.txt将项目中所有依赖版本添加到txt文件中,执行命令后,可以看到文件夹中多出一个requirement.txt的文件,这个文件就是项目中用到的所有的依赖文件,当我们迁移到另外一台服务器的时候,创建虚拟环境后直接执行pip3 install -r requirements.txt就会自动安装所需依赖.

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2017-2021 More Star

请我喝杯咖啡吧~

支付宝
微信