什么时候使用Python 虚拟环境(venv)而不用conda

是的!python3.9 -m venv rtdetr_envPython 原生的虚拟环境(venv),而 conda 是另一个流行的虚拟环境管理工具(来自 Anaconda/Miniconda)。下面我会详细对比两者的区别,并讲解 venv 的基本用法。


1. Python 虚拟环境(venv) vs Conda 虚拟环境

特性Python venvConda
来源Python 自带(标准库)Anaconda/Miniconda 提供
适用场景纯 Python 项目,依赖较少科学计算、复杂依赖(如 PyTorch)
跨平台✅ 支持(Windows/Linux/macOS)✅ 支持
依赖管理仅限 Python 包(pip可管理 Python 包 + 系统库(如 CUDA)
环境隔离仅隔离 Python 包隔离 Python + 非 Python 依赖
创建命令python -m venv myenvconda create -n myenv python=3.9
激活方式source myenv/bin/activate(Linux)conda activate myenv
适用 Python 版本需指定 Python 解释器(如 python3.9可自动安装指定 Python 版本

2. Python venv 虚拟环境详解

(1)创建虚拟环境

python3.9 -m venv rtdetr_env  # 创建一个名为 rtdetr_env 的虚拟环境
  • 这会生成一个 rtdetr_env 文件夹,包含独立的 Python 解释器和 pip
  • 关键目录结构
    rtdetr_env/├── bin/         # 可执行文件(Linux/macOS)├── Scripts/     # 可执行文件(Windows)├── lib/         # 安装的 Python 包└── pyvenv.cfg   # 环境配置文件
    

(2)激活虚拟环境

  • Linux/macOS
    source rtdetr_env/bin/activate
    
    • 激活后,终端提示符会显示 (rtdetr_env),表示当前处于虚拟环境中。
  • Windows
    rtdetr_env\Scripts\activate.bat
    

(3)验证环境

which python   # 应指向虚拟环境内的 Python(如 ~/rtdetr_env/bin/python)
pip -V         # 应显示虚拟环境的 pip 路径

(4)安装包

pip install torch numpy  # 所有包仅安装在当前虚拟环境中

(5)退出虚拟环境

deactivate

3. 何时选择 venv vs Conda?

  • venv 如果
    • 项目仅需 Python 包(如 Web 开发、简单脚本)。
    • 不想安装 Anaconda/Miniconda。
    • 需要轻量级环境(venv 更节省空间)。
  • 用 Conda 如果
    • 涉及科学计算(如 PyTorch、TensorFlow)。
    • 需要管理非 Python 依赖(如 CUDA、FFmpeg)。
    • 需快速切换不同 Python 版本。

4. 常见问题

Q1: venv 和 Conda 能混用吗?

  • ❌ 不推荐!可能引发路径冲突。建议一个项目只用一种工具。

Q2: 如何删除 venv 环境?

  • 直接删除虚拟环境文件夹即可:
    rm -rf rtdetr_env  # Linux/macOS
    

Q3: 虚拟环境的包会占用全局空间吗?

  • ✅ 不会!所有包仅存储在 rtdetr_env/lib/ 下,与系统完全隔离。

5. 总结

  • venv 是 Python 官方推荐的轻量级虚拟环境工具,适合大多数纯 Python 项目。
  • Conda 更适合科学计算场景,能管理更复杂的依赖。
  • 你的操作 python3.9 -m venv rtdetr_env 是完全正确的,接下来只需激活并安装包即可:
    source rtdetr_env/bin/activate
    pip install torch networkx
    

是的!在 Docker 镜像环境(无 Conda) 的情况下,使用 Python 原生的 venv 虚拟环境 是最方便、最轻量的选择,原因如下:


✅ 为什么推荐 venv(而不是 Conda)?

  1. 无需额外安装

    • venv 是 Python 自带的标准库(无需像 Conda 那样额外安装)。
    • 你的 Docker 镜像已经有 Python 3.8/3.9,直接可用。
  2. 轻量且隔离

    • venv 仅隔离 Python 包,不涉及系统依赖(适合 Docker 环境)。
    • Conda 更适合管理复杂依赖(如 CUDA、MKL),但 Docker 通常已配置好这些。
  3. 避免权限问题

    • Conda 可能需要写入系统路径(如 ~/anaconda3),而 Docker 镜像可能限制权限。
    • venv 的环境完全在用户目录下,无权限冲突。
  4. 集群友好

    • 集群环境通常推荐用 venvpip,避免 Conda 的复杂依赖解析。

📌 具体操作步骤

1. 创建虚拟环境

python3.9 -m venv /path/to/your/env  # 推荐放在你的工作目录下

例如:

python3.9 -m venv ~/rtdetr_env  # 在用户目录下创建

2. 激活环境

source ~/rtdetr_env/bin/activate  # Linux/macOS

激活后,终端提示符会显示 (rtdetr_env),表示已进入虚拟环境。

3. 安装依赖包

pip install torch==2.1.0 networkx --index-url https://download.pytorch.org/whl/cu121
  • 所有包会安装在 ~/rtdetr_env/lib/python3.9/site-packages/,与系统隔离。

4. 验证环境

which python  # 应显示 ~/rtdetr_env/bin/python
pip list      # 查看已安装的包

5. 退出环境

deactivate

⚠️ 注意事项

  1. Python 版本问题

    • 如果默认 python3 是 3.8,但你需要 3.9,显式指定 python3.9 -m venv(如你已做的那样)。
    • 检查可用版本:ls /usr/bin/python*
  2. Docker 镜像的持久化

    • Docker 容器停止后,虚拟环境可能丢失(除非挂载了持久化卷)。
    • 建议将 venv 创建在挂载的目录(如 /data 或你的 $HOME)。
  3. pip 换源加速
    如果下载慢,可以临时换源:

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

🆚 为什么不推荐 Conda 在这里?

场景Condavenv
是否需要安装需手动安装 Anaconda/MinicondaPython 自带,直接使用
依赖管理范围Python + 系统库(如 CUDA)仅 Python 包
权限要求可能需写入系统路径完全用户目录隔离
适合场景本地开发机或复杂科学计算Docker/集群/轻量级环境

📚 总结

  • 在 Docker 镜像中,优先使用 venv,因为:
    • 无需额外安装,直接可用。
    • 轻量、无权限问题,适合集群环境。
  • 你的操作 python3.9 -m venv rtdetr_env 完全正确,后续只需激活并安装包即可。
  • 如果遇到问题(如空间不足),可以指定虚拟环境路径到挂载的存储卷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/80560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu20.04安装x11vnc远程桌面

x11vnc是一个VNC服务器, 安装后我们可以不依赖外部的显示设备, 通过网络远程登录ubuntu桌面。 安装x11vnc sudo apt-get install x11vnc 设置VNC登录密码 sudo x11vnc -storepasswd /etc/x11vnc.pwd 设置x11vnc在开机时自动启动 新建如下文件: sudo vi /lib/systemd/sys…

Maven的概念与初识Maven

目录 一、Maven的概念 1. 什么是Maven 2. 项目构建:从代码到部署的标准化流程 2.1 Maven构建生命周期 2.2 传统构建 vs Maven构建 3. 依赖管理:解决“JAR地狱”的利器 3.1 依赖声明 3.2 依赖传递与冲突解决 4. Maven仓库:依赖的存储…

Unity-Shader详解-其二

前向渲染和延迟渲染 前向渲染和延迟渲染总的来说是我们的两种主要的渲染方式。 我们在Unity的Project Settings中的Graphic界面能够找到渲染队列的设定: 我们也可以在Main Camera这里进行设置: 那这里我们首先介绍一下两种渲染(Forward R…

C++ 中 std::tuple 使用详解

C 中 std::tuple 使用详解 基本概念 std::tuple 是 C11 引入的模板类&#xff0c;用于打包任意数量、任意类型的值在一起。可看作是类型安全的变长结构体。 #include <tuple>std::tuple<int, std::string, double> t(42, "hello", 3.14);创建 tuple 的…

WebRTC基于网页的视频会议,手写WebRTC流程(html)

WebRTC是web real-time communication网页及时通信的缩写&#xff0c;通过javascript就可以实现网页会话&#xff0c;基于浏览器开发出来多媒体应用&#xff0c; 以下是手写的WEBRTC调用本地摄像头的html代码&#xff0c;直接用浏览器打开&#xff0c;就可以使用 <!DOCTYPE…

MyBatis 官方子项目详细说明及表格总结

MyBatis 官方子项目详细说明及表格总结 1. 核心子项目说明 1.1 mybatis-3 GitHub 链接&#xff1a;https://github.com/mybatis/mybatis-3功能&#xff1a; MyBatis 核心框架的源码&#xff0c;提供 SQL 映射、动态 SQL、缓存、事务管理等核心功能。主要功能&#xff1a; 支持…

【虚幻C++笔记】碰撞检测

目录 碰撞检测参数详情示例用法 碰撞检测 显示名称中文名称CSphere Trace By Channel按通道进行球体追踪UKismetSystemLibrary::SphereTraceSingleSphere Trace By Profile按描述文件进行球体追踪UKismetSystemLibrary::SphereTraceSingleByProfileSphere Trace For Objects针…

推论阶梯——AI与思维模型【81】

一、定义 推论阶梯思维模型是一种用于分析和理解人们如何从观察到的事实,经过一系列的假设、推理和判断,最终得出结论的思维过程的理论框架。它将这个过程比喻为一个阶梯,每一步都建立在前一步的基础上,逐渐形成一个完整的推论。这个模型帮助我们意识到在思考和决策过程中…

小刚说C语言刷题——1109加密四位数

1.题目描述 某军事单位用 4位整数来传递信息&#xff0c;传递之前要求先对这个 4 位数进行加密。加密的方式是每一位都先加上 5然后对 10取余数&#xff0c;再将得到的新数颠倒过来。 例如&#xff1a;原数是 1379 &#xff0c;那么每位加 55对 10 取余数的结果为 6824 &…

云服务器和独立服务器的区别在哪

在当今数字化的时代&#xff0c;服务器成为了支撑各种业务和应用的重要基石。而在服务器的领域中&#xff0c;云服务器和独立服务器是两个备受关注的选项。那么&#xff0c;它们到底有何区别呢&#xff1f; 首先&#xff0c;让我们来聊聊成本。云服务器通常采用按需付费的模式…

【前端】【业务场景】【面试】在前端开发中,如何优化 SVG(可缩放矢量图形)的性能,特别是在处理复杂图形和动画时

SVG 性能优化&#xff1a;循序渐进 4 步法 目标&#xff1a;先减负 → 再复用 → 后加速 → 最后按场景微调 ① 精简—把包袱先丢掉 删除无用元素 隐藏/被遮挡的 <path>、未引用的 <defs> 里渐变、滤镜。 合并路径 同填充色或描边的路径 ⇒ SVGO / SVGOMG「Mer…

MySQL长事务的隐患:深入剖析与解决方案

MySQL长事务的隐患&#xff1a;深入剖析与解决方案 一、什么是长事务&#xff1f; 在数据库系统中&#xff0c;长事务(Long Transaction)通常指执行时间超过预期或系统设定阈值的事务。对于MySQL而言&#xff0c;虽然没有严格的时间定义&#xff0c;但一般认为执行时间超过数…

华为AR1200 telnet设置

华为路由配置TELNET登 &#x1f4fa; 启动TELNET服务 在华为路由器上启动TELNET服务&#xff0c;执行以下命令&#xff1a; telnet server enable &#x1f511; 配置AAA认证 进入AAA认证配置&#xff0c;创建一个路由器登录帐号admin123&#xff0c;并设置密码为huawei123&…

【Token系列】01 | Token不是词:GPT如何切分语言的最小单元

文章目录 01 | Token不是词&#xff1a;GPT如何切分语言的最小单元&#xff1f;一、什么是 Token&#xff1f;二、Token 是怎么来的&#xff1f;——BPE算法原理BPE核心步骤&#xff1a; 三、为什么不直接用词或字符&#xff1f;四、Token切分的实际影响五、中文Token的特殊性六…

如何快速高效学习Python?

如何快速高效学习Python&#xff1f; How to Fastly and Effectively Learn Python Programming? By JacksonML 1. Python年轻吗&#xff1f; Python自1991年诞生到现在&#xff0c;已经经历了三十四年或者更长时间了。毕竟&#xff0c;Python之父 – 吉多范罗苏姆先生(Gu…

NAT穿透

NAT是 Net Address Traslation的缩写&#xff0c;即网络地址转换 NAT部署在网络出口的位置。位于内网和公网之间&#xff0c;是连接内挖个主机和公网的桥梁&#xff0c;双向流量都必须经过NAT&#xff0c;装有NAT软件的路由器叫NAT路由器&#xff0c;NAT路由器拥有公网Ip NAT解…

搜索引擎的高级语法

文章目录 精确搜索&#xff1a;双引号站内搜索&#xff1a;site通配符搜索&#xff1a;*减号缩小范围&#xff1a;-文档搜索&#xff1a;filetypeURL搜索&#xff1a; inurl标题搜索&#xff1a;intitle正文搜索&#xff1a;intext参考链接 精确搜索&#xff1a;双引号 “ ” …

RAG vs 微调:大模型知识更新的最优解之争

一、技术本质&#xff1a;知识注入的两条路径 在大模型应用落地的实践中&#xff0c;RAG&#xff08;检索增强生成&#xff09;与微调&#xff08;Fine-tuning&#xff09;已成为知识更新的两大核心技术路径。二者的本质差异在于是否对模型参数进行修改&#xff1a; 维度RAG微…

解释器体系结构风格-笔记

解释器&#xff08;Interpreter&#xff09;是一种软件设计模式或体系结构风格&#xff0c;主要用于为语言&#xff08;或表达式&#xff09;定义其语法、语义&#xff0c;并通过解释器来解析和执行语言中的表达式。解释器体系结构风格广泛应用于编程语言、脚本语言、规则引擎、…

浏览器f12可以搜索接口的入参 和返回内容

浏览器f12可以搜索接口的入参 和返回内容