python 项目相关
python -m venv venv
这条命令的作用是,在当前路径下 生成一个 venv 文件夹,并运行 python 的 venv 模块,用于依赖隔离。
命令执行后,会在当前文件下 生成一个 venv/ 的文件夹
python -m venv venvpython 当前环境的 python 解释器
-m venv 运行python 的 venv 模块 ( -m xxx 运行 python 的 xxx 模块)venv 虚拟环境目录名,主要用于区分不同项目,可以随意起。
venv/
├── bin/ # 可执行文件(macOS / Linux)
│ ├── python
│ ├── pip
│ └── activate
├── lib/
│ └── python3.x/
│ └── site-packages/
├── include/
└── pyvenv.cfg
source venv/bin/activate 虚拟环境激活
bash
source venv/bin/activate
# 激活成功
(venv) $
which python 查看 python 指向的虚拟环境
bash
which python
安装依赖只会影响当前项目
bash
pip install requests
安装到 venv/lib/python3.x/site-packages/
deactivate 退出虚拟环境
bash
deactivate
pip list 快速查看当前项目的 python 依赖
Fastapi 项目启动
写一个最小服务
python
from fastapi import FastAPI
app = FastAPI()
@app.get('/health')
def health_check():
return {status:'ok',content:'hello world'}
项目启动
bash
uvicorn main:app --reload
页面访问
服务启动后可以访问的地址:
Pydantic 数据模型
pydantic 会对输入的变量类型进行约束,如果不符合定义的变量类型,就会报如下错误
{
"detail": [
{
"type": "string_type",
"loc": [
"body",
"name"
],
"msg": "Input should be a valid string",
"input": 123
},
{
"type": "int_parsing",
"loc": [
"body",
"age"
],
"msg": "Input should be a valid integer, unable to parse string as an integer",
"input": "asdf"
}
]
}
python
from pydantic import BaseModel
class greetUserRequestModel(BaseModel):
name: str
age: int
class greetUserResponseModel(BaseModel):
message: str
age_in_5_years: int
@app.post("/greet", response_model=greetUserResponseModel)
def greet_user(request: greetUserRequestModel):
message = f"Hello, {request.name}!"
age_in_5_years = request.age + 5
return greetUserResponseModel(message=message, age_in_5_years=age_in_5_years)