python安装

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-urlencodedmultipart/form-data 的请求。
  • 与 FastAPI 的 DependsQuery 等类似,用于绑定请求的数据。