当前位置: 首页 > news >正文

Python使用pip安装install模块时指定默认源以及FastApi自定义接口文档/docs中的静态资源文件

一、Python使用pip安装install模块时指定默认源

        经常安装的时候收到提示:

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status =None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnect object at 0x00000195FDBFC6A0>, 'Connection to pypi.org timed out. (connect timeout=15)')': /simple/crypto/

这和本地的网络限制和网速有关,之前在docker容器中也碰到过类似情形,见地址:可以在我的CSDN博客中搜索

    可以通过指定python源的方式来进行安装,如下指定源为pypi.tuna.tsinghua.edu.cn 来安装成功。

pip install pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

但这个方法不能一劳永逸,每次安装都忘了指定源,也不方便随时复制源地址,可以通过修改pip的配置文件来实现默认源的修改。我这里使用的是windows10,Python版本是3.8,在以下目录下创建文件:C:\Users\用户名\AppData\Roaming\pip\php.ini文件,编辑一下php.ini文件,内容如下:

[global]
timeout = 6000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn

    然后python执行pip安装就丝滑了很多。

二、FastApi自定义接口文档/docs中的静态资源文件

        FastAPI 是一个用于构建 Web API 的现代、快速(高性能)的 Python 框架,基于标准的 Python 类型提示。它由 Sebastián Ramírez 开发,并且自 2018 年发布以来迅速获得了社区的支持和认可。FastAPI 基于 Starlette 背后的异步框架来处理请求,并使用 Pydantic 库来进行数据校验。其主要特点有如下:

  1. 快速开发:减少人为错误,提高开发速度,因为 FastAPI 使用 Python 类型提示自动检查数据,确保数据的有效性。
  2. 快速运行:性能接近 NodeJS 和 Go,使得 FastAPI 成为最快的 Python Web 框架之一。
  3. 易于使用:直观的设计,开发者可以快速上手,同时提供了详细的文档和大量的示例代码。
  4. 强大的编辑器支持:由于 FastAPI 基于 Python 类型提示,因此可以利用现代 IDE 的功能,比如自动完成和错误检测。
  5. 自动化的交互式文档:FastAPI 自动生成了两个版本的 API 文档,一个是 Swagger UI,另一个是 ReDoc,这使得用户可以很容易地测试和了解你的 API。
  6. 依赖注入系统:允许开发者轻松地管理依赖关系,使得代码更加模块化和可重用。
  7. 安全性:内置了多种认证方式的支持,包括 OAuth2 密码流、JWT 等等。
  8. 异步编程:完全支持异步操作,可以充分利用现代硬件的能力,提高应用的并发处理能力。

    之前我写过一篇关于将静态资源文件修改为本地文件文章: FastApi接口文档/docs中静态资源文件修改为本地文件以及Ubuntu下python报错ModuleNotFoundError: No module named apt_pkg的解决_fastapi接口文档修改接口名称-CSDN博客是通过修改fastapi的库文件里的代码来实现接口文档/docs中静态资源文件修改为本地文件,但这样的方法并不是一个好方法,因为在部署环境时要去修改镜像里的库文件代码,不正规不方便。实际fastapi在其文档里有相关的功能描述,地址 https://fastapi.tiangolo.com/advanced/extending-openapi/?h=get_swagger_ui_html#serve-the-static-files

其中的例子简化修改一下如下:

#引入库要的库
from fastapi import FastAPI
from fastapi.openapi.docs import get_swagger_ui_html,#Import StaticFiles. 
from fastapi.staticfiles import StaticFiles#定义app,这步很重要,一定要传入docs_url=None, 
#Disable the automatic docs¶
#The first step is to disable the automatic docs, as those use the CDN by default.
#To disable them, set their URLs to None when creating your FastAPI app:
app = FastAPI(docs_url=None, redoc_url=None)#"Mount" a StaticFiles() instance in a specific path.
app.mount("/static", StaticFiles(directory="static"), name="static")@app.get("/docs", include_in_schema=False)
async def custom_swagger_ui_html():return get_swagger_ui_html(openapi_url=app.openapi_url,title=app.title + " - Swagger UI",oauth2_redirect_url=app.swagger_ui_oauth2_redirect_url,swagger_js_url="/static/swagger-ui-bundle.js",swagger_css_url="/static/swagger-ui.css",swagger_favicon_url='/docs/favicon.png',)

    因为我们虽然用的fastapi,但是对其经过了封装处理,并不是直接如上面这种使用,我曾简单的尝试了一下切换成静态资源,没有切换成功,怀疑和我们的封装有关,今天经过排查发现要使用本地静态资源时,在定义app时一定要传入docs_url=None,不然没法成功,这步很重要。 


http://www.mrgr.cn/news/49349.html

相关文章:

  • Edge TTS
  • 架构设计笔记-15-面向服务架构设计理论与实践
  • 【WPF】中ListBox的ListBox选项的选中状态在弹出MessageBox后失效的解决办法
  • 数据结构之旅(顺序表)
  • 基础sql
  • Harmony开发基础
  • 数据仓库-数仓分层建设
  • javaweb 实验五 JSP编程
  • 物理学的近代与现代发现概述
  • 9.存储过程安全性博客大纲(9/10)
  • Vue3高级API的使用
  • Java中的Collection接口
  • 操作系统导论
  • wait和waitpid
  • 6 个最值得使用的 iPad 数据恢复软件
  • 第六课 Vue中的条件语句指令
  • 基于DDD架构模型优化中台架构设计的见解
  • C++从入门到起飞之——AVL树 全方位剖析!
  • C++第六讲:STL--vector的使用及模拟实现
  • C++ : STL容器之vector剖析