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

在FastAPI网站学python:虚拟环境创建和使用

Python虚拟环境(virtual environment)是一个非常重要的工具,它允许开发者为每个项目创建独立的Python环境,隔离您为每个项目安装的软件包,从而避免不同项目之间的依赖冲突。

学习参考FastAPI官网文档:Virtual Environments - FastAPI

创建虚拟环境

创建一个工作目录

# 💬 Go to the home directory
cd
# 💬 Create a directory for all your code projects
mkdir code
# 💬 Enter into that code directory
cd code
# 💬 Create a directory for this project
mkdir awesome-project
# 💬 Enter into that project directory
cd awesome-project

当然也可以简化下输入:

# 回到用户主目录
cd
# 创建并进入code目录
mkdir code && cd code
# 创建并进入项目目录
mkdir awesome-project && cd awesome-project

创建虚拟环境

python -m venv .venv

根据python版本和操作系统不通,可能python命令也不同,比如在FreeBSD下python3.11版本的命令是:

python3.11 -m venv .venv

激活虚拟环境

source .venv/bin/activate

这是bash下的命令,如果在csh下,则使用

source .venv/bin/activate.csh

检查虚拟环境是否处于活动状态

which python

比如输出

which python
/home/skywalk/work/awesome/.venv/bin/python

管理python虚拟环境

升级pip

如果使用pip来安装软件包(默认情况下,Python附带),则应该将其升级到最新版本。

安装软件包时,只需先升级pip,就能解决许多奇特的错误。

python -m pip install --upgrade pip

当然大部分时候也可以简写成:

pip install pip -U

设置pip加速镜像

国内到pip官网的下载速度慢,所以要配置国内的pip加速镜像,有两种加速方法:

 第一种是临时使用,每次使用都需要在pip命令后加入-i参数,如:

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

第二种,使用pip config set global.index-url 存入配置

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

添加.gitignore

如果正在使用Git,则需要添加一个.gitignore文件,从Git中排除.venv中的所有内容。

echo "*" > .venv/.gitignore

 

安装软件包

激活环境后,就可以在其中安装软件包。

直接安装软件包

如果很着急,不想使用文件来声明项目的软件包要求,可以直接安装它们。

比如安装FastAPI

pip install "fastapi[standard]"

提示

requirements.txt安装


将程序所需的软件包和版本放入文件中(例如requirements.txtpyproject.toml)是一个(非常)好主意。

如果有requirements.txt,则可以这样来安装其软件包:

pip install -r requirements.txt

 

运行程序¶

激活虚拟环境后,您可以运行程序,它将使用虚拟环境中的Python,以及安装好的软件包。

比如我们写一个main.py文件,内容:

import osname = os.getenv("MY_NAME", "World")
print(f"Hello {name} from Python")

然后执行:

python main.py
你好,世界
 

配置编辑器¶

编辑器确保将其配置为使用创建的相同虚拟环境(它可能会自动检测它),以便可以获得自动填充和错误关联管理。

停用虚拟环境¶

完成项目工作后,您可以停用虚拟环境。

deactivate

软件包安装在哪里¶

当安装Python时,它会在计算机中创建一些包含一些文件的目录。

其中一些目录负责存放安装的所有软件包。

比如安装FastAPI

pip install "fastapi[standard]"

这将下载一个带有FastAPI代码的压缩文件,通常来自PYPI.

它还将下载FastAPI依赖的其他软件包的文件。

然后,提取所有这些文件,并将它们放入计算机上的目录中。

默认情况下,它将将下载和提取的文件放在Python安装附带的目录中,对本文来说,就放在创建的.venv子目录的这个目录中:.venv/lib64/python3.11/site-packages/fastapi 

总结

python虚拟环境可以将python环境隔离。由于ptyhon的软件包版本繁多,很多不同软件需要不同的软件版本,如果不使用虚拟环境,很可能发生一个软件安装,其它软件因为依赖库的版本不对就不能用的情况。

Python虚拟环境是管理项目依赖、避免版本冲突的重要工具。通过创建和使用虚拟环境,可以确保每个项目都有自己独立的Python解释器和依赖包,从而提高开发效率和项目的可维护性。

相关文章:

在FastAPI网站学python:虚拟环境创建和使用

Python虚拟环境(virtual environment)是一个非常重要的工具,它允许开发者为每个项目创建独立的Python环境,隔离您为每个项目安装的软件包,从而避免不同项目之间的依赖冲突。 学习参考FastAPI官网文档:Virt…...

安全风险评估(Security Risk Assessment, SRA)

安全风险评估(Security Risk Assessment, SRA)是识别、分析和评价信息安全风险的过程。它帮助组织了解其信息资产面临的潜在威胁,以及这些威胁可能带来的影响。通过风险评估,组织可以制定有效的风险管理策略,以减少或控…...

SQL Injection | SQL 注入 —— 布尔盲注

关注这个漏洞的其他相关笔记:SQL 注入漏洞 - 学习手册-CSDN博客 0x01:布尔盲注 —— 理论篇 布尔盲注(Boolean-Based Blind Injection)是一种常见的 SQL 注入技术,它适用于那些 SQL 注入时,查询结果不会直…...

stm32 bootloader写法

bootloader写法: 假设app的起始地址:0x08020000,则bootloader的范围是0x0800,0000~0x0801,FFFF。 #define APP_ADDR 0x08020000 // 应用程序首地址定义 typedef void (*APP_FUNC)(void); // 函数指针类型定义 /*main函数中调用rum_app&#x…...

Unity3D 物体表面水滴效果详解

在游戏开发中,逼真的水滴效果能够显著提升游戏场景的真实感和沉浸感。Unity3D作为一款强大的游戏开发引擎,提供了丰富的工具和技术来实现这种效果。本文将详细介绍如何在Unity3D中实现物体表面的水滴效果,包括技术详解和代码实现。 对惹&…...

若依框架中spring security的完整认证流程,及其如何使用自定义用户表进行登录认证,学会轻松实现二开,嘎嘎赚块乾

1)熟悉之前的SysUser登录流程 过滤器链验证配置 这里security过滤器链增加了前置过滤器链jwtFilter 该过滤器为我们自定义的,每次请求都会经过jwt验证 ok我们按ctrl alt B跳转过去来看下 首先会获取登录用户LoginUser 内部通过header键,获…...

selenium:操作滚动条的方法(8)

selenium支持几种操作滚动条的方法,主要介绍如下: 使用ActionChains 类模拟鼠标滚轮操作 使用函数ActionChains.send_keys发送按键Keys.PAGE_DOWN往下滑动页面,发送按键Keys.PAGE_UP往上滑动页面。 from selenium import webdriver from se…...

Discuz | 起尔开发 传奇开服表游戏公益服发布论坛网站插件

Discuz | 起尔开发 传奇开服表游戏公益服发布论坛网站插件 插件下载:源码 - 起尔开发的插件下载 演示地址:discuz.72jz.com 标黄和非标黄自动分开 在标黄时间内显示在上面置顶,标黄过期后自动显示在下面白色区域。 后台可以设置非标黄默认…...

问:JAVA对象的数据结构长啥样?

Java 对象在内存中的结构是一个复杂且精细的设计,它不仅关乎对象如何存储,还直接影响到垃圾回收(GC)、并发控制等运行时行为。一个典型的 Java 对象主要由三部分组成:对象头(Object Header)、实…...

STGCN解读(论文+代码)

一、引言 引言部分不是论文的重点,主要讲述了交通预测的重要性以及一些传统方法的不足之处。进而推出了自己的模型——STGCN。 二、交通预测与图卷积 第二部分讲述了交通预测中路图和图卷积的概念。 首先理解道路图,交通预测被定义为典型的时间序列预测…...

perl读取目录,写入文件

perl读取目录,写入文件 此脚本有两个输入参数,第一个参数为需要打印的文件目录,第二个参数为打印后的文件名; 该脚本名称为out_file_full_path #!/bin/perluse 5.010; my $dir $ARGV[0]; # 此为第一个参数; opendi…...

JDK-23与JavaFX配置在IDEA中

一、安装 1.IDEA安装,可以查看CSDN 2.JDK,JavaFX安装,可以查看CSDN 二、配置JDK 打开IDEA,选择个项目,点击图中的设置按钮: 点击项目设置: 点击“”添加JDK,寻找相应的JDK目录就行 三、配置…...

VSCode运行QT界面

VSCode用久了,感觉Qt Creator的写起代码来还是不如VSCode得心应手,虽然目前还是存在一些问题,先把目前实现的状况做个记录,后续有机会再进一步优化。 当前方式 通过QtCreator创建一个CMake项目,然后使用CMake的方式在VSCode中进行编译。 claude给出的建议 左上角的名字会…...

npm-run-all 使用实践

参考: npm-run-all 背景 在前端开发中,你是否存在以下烦恼: 写 package.json 的 scripts 命令时,命令太过冗长,例如编译命令 build 需要执行清理 clean, 编译css build:css, 编译js build:js, 编译html build:html 命令,则 bui…...

【CCPC】The 2021 CCPC Guilin Onsite (XXII Open Cup, Grand Prix of EDG) K

Tax #图论 #最短路 #搜索 #暴力 题目描述 JB received his driver’s license recently. To celebrate this fact, JB decides to drive to other cities in Byteland. There are n n n cities and m m m bidirectional roads in Byteland, labeled by 1 , 2 , … , n 1,…...

selenium的实际使用

1.标签页的切换 #获取当前所有的窗口 curdriver.window_handles #根据窗口索引进行切换 driver.switch_to.window(cur[1]) from selenium import webdriverimport timedriver webdriver.Chrome()driver.get(http://www.baidu.com)time.sleep(1)eledriver.find_element_by…...

OpenShift 4 - 云原生备份容灾 - Velero 和 OADP 基础篇

《OpenShift 4.x HOL教程汇总》 说明: 本文主要说明能够云原生备份容灾的开源项目 Velero 及其红帽扩展项目 OADP 的概念和架构篇。操作篇见《OpenShift 4 - 使用 OADP 对容器应用进行备份和恢复(附视频) 》 Velero 和 OADP 包含的功能和模…...

javaWeb项目-Springboot+vue-校园论坛系统功能介绍

本项目源码(点击下方链接下载):java-springbootvue-xx学校校园论坛信息系统实现源码(项目源码-说明文档)资源-CSDN文库 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot…...

centors7升级GLIBC2.18

错误来源:找不到GLIBC2.18,因为glibc的版本是2.17 网上大多教程方法,反正我是行不通: 方法1:更新源,然后使用yum安装更新 方法2:下载源码,configrue,make执行 wget h…...

基于深度学习的异常检测

基于深度学习的异常检测是一项重要的研究领域,主要用于识别数据中的异常样本或行为。异常检测广泛应用于多个领域,如网络安全、金融欺诈检测、工业设备预测性维护、医疗诊断等。传统的异常检测方法通常依赖于统计分析或规则,但随着数据复杂性…...

深入理解 SQL 中的高级数据处理特性:约束、索引和触发器

在 SQL(Structured Query Language)中,除了基本的查询、插入、更新和删除操作外,还有一些高级的数据处理特性,它们对于确保数据的完整性、提高查询性能以及实现自动化的数据处理起着至关重要的作用。这些特性包括约束、…...

IC验证面试中常问知识点总结(七)附带详细回答!!!

15、 TLM通信 15.1 实现两个组件之间的通信有哪几种方法?分别什么特点? 最简单的方法就是使用全局变量,在monitor里对此全局变量进行赋值,在scoreboard里监测此全局变量值的改变。这种方法简单、直接,不过要避免使用全局变量,滥用全局变量只会造成灾难性的后果。 稍微复…...

【前端】如何制作一个自己的网页(8)

以下内容接上文。 CSS的出现,使得网页的样式与内容分离开来。 HTML负责网页中有哪些内容,CSS负责以哪种样式来展现这些内容。因此,CSS必须和HTML协同工作,那么如何在HTML中引用CSS呢? CSS的引用方式有三种&#xff1…...

Java之模块化详解

Java模块化,作为Java 9引入的一项重大特性,通过Java Platform Module System (JPMS) 实现,为Java开发者提供了更高级别的封装和依赖管理机制。这一特性旨在解决Java应用的封装性、可维护性和性能问题,使得开发者能够构建更加结构化…...

HTB:Knife[WriteUP]

目录 连接至HTB服务器并启动靶机 1.How many TCP ports are open on Knife? 2.What version of PHP is running on the webserver? 并没有我们需要的信息,接着使用浏览器访问靶机80端口 尝试使用ffuf对靶机Web进行一下目录FUZZ 使用curl访问该文件获取HTTP头…...

MOE论文详解(4)-GLaM

2022年google在GShard之后发表另一篇跟MoE相关的paper, 论文名为GLaM (Generalist Language Model), 最大的GLaM模型有1.2 trillion参数, 比GPT-3大7倍, 但成本只有GPT-3的1/3, 同时效果也超过GPT-3. 以下是两者的对比: 跟之前模型对比如下, 跟GShard和Switch-C相比, GLaM是第一…...

LeetCode322:零钱兑换

题目链接&#xff1a;322. 零钱兑换 - 力扣&#xff08;LeetCode&#xff09; 代码如下 class Solution { public:int coinChange(vector<int>& coins, int amount) {vector<int> dp(amount 1, INT_MAX);dp[0] 0;for(int i 0; i < coins.size(); i){fo…...

速盾:高防 cdn 提供 cc 防护?

在当今网络环境中&#xff0c;网站面临着各种安全威胁&#xff0c;其中 CC&#xff08;Challenge Collapsar&#xff09;攻击是一种常见的分布式拒绝服务攻击方式。高防 CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;作为一种有效的网络安全防…...

【大数据应用开发】2023年全国职业院校技能大赛赛题第10套

如有需要备赛资料和远程培训,可私博主,详细了解 目录 任务A:大数据平台搭建(容器环境)(15分) 任务B:离线数据处理(25分) 任务C:数据挖掘(10分) 任务D:数据采集与实时计算(20分) 任务E:数据可视化(15分) 任务F:综合分析(10分) 任务A:大数据平台搭…...

【源码部署】解决SpringBoot无法加载yml文件配置,总是使用8080端口方案

打开idea&#xff0c;file ->Project Structure 找到Modules &#xff0c;在右侧找到resource目录&#xff0c;是否指定了resource&#xff0c;点击对应文件夹会有提示...