-
virtualenv 是目前最流行的 python 虚拟环境配置工具。它不仅同时支持 python2 和 python3,而且可以为每个虚拟环境指定 python 解释器,并可以选择继承基础版本的包。
virtualenv 可以说是 venv 的增强版本,不过早在 venv 出现之前,virtualenv 就算是最受欢迎的命令行环境管理工具了。venv 的许多特性也是借鉴的 virtualenv,相比于 venv,其强大之处主要在:
更快
扩展性更强
自动发现并可创建多版本的 Python 环境
可通过 pip 更新
丰富的编程接口查看全部 -
这里的虚拟环境创建不是 python venv -m ./venv查看全部
-
项目开发中的版本报错requierments.txt
查看全部 -
官方文档地址
imooc:http://imooc.com/article/304756
查看全部 -
在 FastAPI 中,query_string 和 query_params 是两种用于处理 URL 查询参数的方法。
query_string 是原始的、未解析的查询参数字符串。例如,在 URL http://example.com/?key=value 中,query_string 就是 key=value。
query_params 是已解析的查询参数,它是一个字典,包含了所有的查询参数和它们的值。在上面的例子中,query_params 就是 {'key': 'value'}
查看全部 -
在 Python 中,List[int] 和 list[int] 都是用来表示一个只包含整数的列表的类型注解。不过,他们来自两个不同的库,有些微小的区别。
List[int] 来自 typing 模块,这个模块在 Python 3.5 版本引入,主要用来支持更丰富的类型注解。List 是一个泛型类,你可以用它来指定列表中元素的类型,比如 List[int] 就表示一个整数列表。
list[int] 则是在 Python 3.9 版本中引入的,作为内置的 list 类的泛型版本。它的行为和 List[int] 基本上是一样的,但更符合 Python 的语法习惯。
所以,如果你的代码需要在 Python 3.9 之前的版本上运行,你应该使用 List[int],否则你可以选择使用 list[int]。需要注意的是,无论使用哪种方式,都需要确保你的代码运行在开启了类型注解的环境中。
Python 的类型注解是一种可选的特性,你可以通过以下步骤来确认你的代码是否在开启了类型注解的环境中运行:
使用 typing 模块:Python 的 typing 模块提供了一套丰富的类型系统,你可以用它来为函数参数、返回值以及变量添加类型注解。如果你的代码中使用了 typing 模块,并且没有遇到 ImportError,那么就说明你的环境支持类型注解。
运行静态类型检查器:Python 的类型注解在运行时并不会造成任何效果,它们主要是为了提供给静态类型检查器(例如 mypy、pytype 或 PyCharm)使用的。你可以尝试运行这些工具来检查你的代码,如果它们可以正常工作,那么就说明你的环境支持类型注解。
检查 Python 版本:Python 的类型注解功能在 Python 3.5 版本引入。如果你的环境中的 Python 版本低于这个版本,那么就不支持类型注解。你可以通过运行 python --version 命令来查看你的 Python 版本。
查看全部 -
cffi=1.4.4
python 312版本
pip install 安装报错
解决方法:
1.查询 https://pypi.org/search/?q=cffi 当前最新的包版本 [我这边查询到是cffi==1.16.0]
2.修改项目下载依赖文件
requirements.txt
将 cffi=1.4.4 修改成 cffi=1.16.0[查询的最新包的版本号]
3.重新执行命令
pip install -r .\requirements.txt
4.如果之前有根据依赖文件安装过部分包,需要删除的话执行
pip uninstall -y -r .\requirements.txt查看全部 -
color console
查看全部 -
**结构赋值
查看全部 -
注意版本兼容问题
查看全部 -
import os
查看全部 -
1、导入HTTPException
2、raise HTTPException(status_code= , detail="",headers={"X-Error":"Error"})
return {"city":city}
查看全部 -
app = FastAPI(
title=' ...' , #标题
description='', #描述
version='', #版本
docs_url='/docs', #docs文档地址
redoc_url='/redoc' #redoc文档地址
查看全部 -
static挂载 app.mount('/static',app=StaticFiles(directory='./...'))
查看全部 -
uploadFile:
上传文件,优势较大,可上传大文件,要提供下载功能
查看全部 -
版本问题需要有版本规划
查看全部 -
##函数顺序就是路由顺序
查看全部 -
from fastapi import APIRouter from typing import Optional, List, Tuple, Dict from pydantic import BaseModel, EmailStr tutor04 = APIRouter() class UserBase(BaseModel): username: str email: EmailStr mobile: List[str] = [None] address: str = None full_name: Optional[str] = None class UserIn(UserBase): password: str class UserOut(UserBase): pass users = { "user01": {"username": "001", "password": "3456789", "email": '123@163.com'}, "user02": {"username": "001", "password": "3456789", "email": '123@163.com', "address": "mnnnnnnnnnnnnnn大桥"}, "user03": {"username": "001", "password": "3456789", "email": '123@163.com', "address": "mnnnnnnnnnnnnnn大桥", "full_name": "jack"}, } @tutor04.post('/04/response_model', response_model=UserOut) async def tutor04_response_model( user: UserIn ): print(users.get('user01')) return users.get('user01')
查看全部 -
# COOKIE @tutor03.get('/033/cookie') def cookie( cookie_id: Optional[str] = Cookie(None) ): return {"cookie_id": cookie_id} # HEADERS @tutor03.get('/033/headers') def headers( user_agent: Optional[str] = Header(None, convert_underscores=True), x_token: Optional[str] = Header(None, convert_underscores=True) ): return {"user_agent": user_agent, 'x_token': x_token}
查看全部 -
class Demo(BaseModel): name: str price: float is_offer: Union[bool, None] = None descrition: List[str] = []
赋初始值被认为是 Optional 字段,否则被认为是 Required 字段
也可以通过 Optional 明确指定
另外,如果指定了字段类型,那么通过以下方式确认字段时也是有顺序的
print(Demo.__fields__.keys())
查看全部 -
不同包之间的版本兼容性
查看全部 -
pytcharm可以安装pydantic 插件
copy浅拷贝
查看全部 -
路径校验:Path
查询校验:Query
请求体字段校验:Field
查看全部 -
导入多个不同的依赖
查看全部 -
依赖注入
查看全部 -
ertert
查看全部
举报