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

创建Python虚拟环境

0、为什么需要Python虚拟环境

虚拟环境是一个完全独立的 Python 环境,它拥有自己独立的 Python 解释器、Python 包和依赖库。

作用

  • 避免包冲突
    不同的项目可能依赖于同一个包的不同版本。
    如果没有虚拟环境,将这些不同版本的包安装在全局 Python 环境中会产生冲突。
  • 保持环境一致性
    虚拟环境可以确保项目在不同的开发、测试和生产环境中具有一致的依赖库版本。
    这样可以避免因环境差异导致的代码在不同环境中运行结果不一致的问题。
  • 方便管理
    虚拟环境使得包的安装、升级和卸载操作更加灵活和可控。
    你可以轻松地为每个项目创建、激活和销毁虚拟环境,不会对其他项目或系统环境造成影响。

1、创建Python虚拟环境的基本流程

1.1、安装 python3-venv 软件包

我的系统 Python 版本是 3.12,执行以下命令:

sudo apt update
sudo apt install python3.12-venv

如果不装python3-venv,会报错“缺少 ensurepip”。

1.2、创建虚拟环境

1.2.1、创建虚拟环境

使用该命令会自动在当前目录下创建my_py_venv文件夹,并在该文件夹下创建虚拟环境。

python3 -m venv my_py_venv

命令解释:
-m 是 Python 解释器的一个选项,其作用是将一个 Python 模块作为脚本运行。
venv 是 Python 标准库中的一个模块,全称为 virtual environment(虚拟环境)。

1.2.2、虚拟环境目录结构解释

在这里插入图片描述

  • activate、activate.csh、activate.fish、Activate.ps1:这些是用于激活虚拟环境的脚本,不同的脚本适用于不同的 shell 环境。
    activate 用于 bash 或类似的 shell;activate.csh 用于 csh 或 tcsh;activate.fish 用于 fish shell;Activate.ps1 用于 PowerShell。
  • pip、pip3、pip3.12:pip 包管理工具的可执行文件,用于在虚拟环境中安装、升级和管理 Python 包。
  • python、python3、python3.12:这些是指向 Python 解释器的链接。
  • include/python3.12:该目录包含了 Python 3.12 版本的头文件。
  • lib/python3.12:这是虚拟环境中 Python 库的主要存放位置。
  • lib64 -> lib:这是一个软链接,指向 lib 目录,主要是为了在 64 位系统上保持兼容性。
  • pyvenv.cfg 文件
    该文件是虚拟环境的配置文件,包含了虚拟环境的一些基本配置信息,如 Python 解释器的路径、是否使用系统级别的包等。通过修改这个文件,你可以对虚拟环境的行为进行一些定制化设置。

1.3、激活虚拟环境

创建成功后,激活虚拟环境以便安装和使用 Python 包。对于 Linux 系统,执行以下命令:

source ./my_py_venv/bin/activate

激活后,你的终端命令提示符通常会显示虚拟环境的名称,表明你已进入虚拟环境。
在这里插入图片描述

1.4、退出虚拟环境

deactivate

这样就可以回到系统的全局 Python 环境。

在这里插入图片描述

http://www.xdnf.cn/news/3043.html

相关文章:

  • mybatis传递多个不同类型的参数到mapper xml文件
  • MAC安装unar并解压.rar文件
  • 实现在h5中添加日历提醒:safari唤起系统日历,其它浏览器跳转google日历
  • 数据资产如何产生价值与发挥价值:从认知到实践的全景指南
  • 智慧交警系统架构设计方案
  • k8s学习笔记
  • echo 1 > /proc/sys/kernel/nmi_watchdog报错
  • 在阿里云实例上部署通义千问QwQ-32B推理模型
  • outlook for mac本地邮件存放在哪儿?
  • 【趣谈】Cyber、Web、Network都是网络有什么区别
  • 正则基础与进阶
  • 【报错问题】 macOS 的安全策略(Gatekeeper)阻止了未签名的原生模块(bcrypt_lib.node)加载
  • 6.4 内部协作与知识管理:智能助手与企业知识库的集成
  • VPN访问SAP组服务器报登陆负载均衡错误88:无法连接到消息服务器(RC=9)
  • 蓝桥杯 11. 最大距离
  • idm 禁止自动更新提示(修改注册表)
  • JAVA使用Apache POI导出Word,支持向表格动态添加多行数据
  • linux中由于编译选项-D_OS64BIT导致的核心已转储问题
  • gitee 如何修改提交代码的邮箱
  • C++ 中自主内存管理 new/delete 与 malloc/free 完全详解
  • gradle 下载的tencent的镜像
  • 为什么 Vite 速度比 Webpack 快?
  • STM32单片机入门学习——第49节: [15-2] 读写内部FLASH读取芯片ID
  • 【行业特化篇3】制造业简历优化指南:技术参数与标准化流程的关键词植入艺术
  • 在Spark中通过jps命令看到的进程名,是哪个命令产生有什么作用
  • 亚远景-ASPICE认证:如何优化软件开发流程?
  • js 正则中的$0,1,2,3 是怎么用的
  • 解析表观遗传学的工具——ChIP-seq(二)
  • 博客打卡-小易喜欢的数列-动态规划
  • python数据分析(六):Pandas 多数据操作全面指南