Python安装 #
安装地址:python
查看python版本 #
python --verison
查看python路径 #
where python
列出所有已安装的 Python 版本 #
py -0
指定运行某个版本 #
py -3.12
指定版本环境 #
右键点击“此电脑” > 选择“属性” > 高级系统设置 > 环境变量
调整版本上下顺序
C:\Users\<用户名>\AppData\Local\Programs\Python\Python38\
C:\Users\<用户名>\AppData\Local\Programs\Python\Python312\
virtualenv介绍 #
Virtualenv
是一个工具,它能够帮我们创建一个独立(隔离)的 Python 环境。想象你有一个应用程序,依赖于版本为2的第三方模块,但另一个程序依赖的版本是3,请问你如何使用和开发这些应用程序?
如果你把一切都安装到了 /usr/lib/python2.7/site-packages
(或者其它平台的标准位置),那很容易出现某个模块被升级而你却不知道的情况。
在另一种情况下,想象你有一个已经开发完成的程序,但是你不想更新它所依赖的第三方模块版本;但你已经开始另一个程序,需要这些第三方模块的版本。
使用 virtualenv
!针对每个程序创建独立(隔离)的 Python 环境,而不是在全局安装所依赖的模块。
要安装它,只需要在命令行中输入以下命令:
$ pip install virtualenv
最重要的命令是:
$ virtualenv myproject
$ source myproject/bin/activate
执行第一个命令在 myproject
文件夹创建一个隔离的 virtualenv 环境,第二个命令激活这个隔离的环境(virtualenv
)。
在创建 virtualenv 时,你必须做出决定:这个 virtualenv 是使用系统全局的模块呢,还是只使用这个virtualenv内的模块? 默认情况下,virtualenv 不会使用系统全局模块。
如果你想让你的 virtualenv 使用系统全局模块,请使用 --system-site-packages
参数创建你的 virtualenv,例如:
virtualenv --system-site-packages mycoolproject
使用以下命令可以退出这个 virtualenv:
$ deactivate
运行之后将恢复使用你系统全局的 Python 模块。
async def detection_video(
files: List[Union[UploadFile, str, None]],
startTime: Annotated[int, Form()] = 0,
endTime: Annotated[int, Form()] = sys.maxsize,
mode: Annotated[str, Form()] = 'keyFrame',
intervalSeconds: Annotated[int, Form()] = 1000,
diff: Annotated[float, Form()] = 2.5) -> StreamingResponse:
if len(files) == 0:
raise Exception("没有提供文件或路径")
return StreamingResponse(DetectionService.video(files, mode, intervalSeconds, diff, startTime, endTime),
media_type="text/event-stream")
List[Union[UploadFile, str, None]]
#
这是一个复杂的类型注解,分解如下:
1. List
#
- 表示一个列表,列表中的元素可以包含多种类型。
- 例如:
[1, 2, 3]
是一个List[int]
;["a", "b"]
是一个List[str]
。
2. Union[UploadFile, str, None]
#
-
表示列表中的每个元素可以是以下三种类型之一:
-
UploadFile
:
- FastAPI 提供的文件上传类型,表示客户端上传的文件。
- 包含文件内容、文件名等信息。
-
Annotated[int, Form()]
#
这是 FastAPI 的一种类型注解,表示参数的类型和额外的元数据。
1. Annotated
#
- 用于将类型与额外的元信息(如验证规则、API 请求参数)绑定。
- 提供更强大的类型约束和文档生成支持。
- 格式:
Annotated[类型, 元数据]
。
2. int
#
- 表示参数是整数类型。
- 例如:
123
是一个合法值。
3. Form()
#
- 表示参数是通过表单数据传递的。
- 适用于
application/x-www-form-urlencoded
或multipart/form-data
的请求。 - 与 FastAPI 的
Depends
、Query
等类似,用于绑定请求的数据。