python虚拟环境总结(python -m venv和anaconda,miniconda的异同)

下面把 python -m venv(简称 venv)和 Anaconda/Miniconda(conda) 放在同一张“脑内对照表”里讲清楚:它们都能“隔离环境”,但定位和能力边界不一样。


共同点(相同)

  • 都能创建相互隔离的 Python 环境(不同项目互不干扰)
  • 都支持为每个项目安装不同版本的依赖
  • 都能做到“这个项目用这一套包/解释器”

核心差异(最重要的不同)

1) 解决的问题范围

1.1 安装范围
venv:只管 Python 生态(pip 包)

  • 主要隔离的是:pip install … 装的 Python 包
  • 不擅长处理:系统级/二进制依赖(如 CUDA、MKL、GDAL、某些 C 库)

conda:管 Python + 非 Python 依赖(更像“环境管理器”)

  • 不仅能装 Python 包,也能装很多非 Python 的库和工具链
  • 常见优势场景:数据科学/深度学习/科学计算(numpy/scipy/pytorch + CUDA 等)

1.2 作用范围
venv:通常一个项目一个venv

  • 环境通常是“项目本地的一个目录”(比如 ./myvenv),所以激活脚本路径是相对项目的——你不在项目目录就找不到 ./myvenv/bin/activate。

conda:本机多个项目共享一个或几个env

  • 环境默认集中放在一个全局目录(比如 ~/miniconda3/envs/xxx),激活时 conda 自己去那个全局目录找,所以你在任何目录都能 conda activate xxx。

2) Python 版本管理

venv:用“当前 python”创建环境

  • 你先得装好目标版本的 Python,然后用那个 Python 来创建 venv
    例如你想要 3.11,你得先有 python3.11

conda:创建环境时直接指定 Python 版本

  • conda create -n myenv python=3.11
    conda 会自己下载安装到环境里(更省事)

3) 包管理器与依赖解析

venv:环境隔离 + pip 装包

  • 默认用 pip(依赖解析能力较强,但遇到编译/二进制问题时可能麻烦)
  • 依赖冲突时通常靠你调整版本、换轮子、装系统依赖

conda:用 conda(或 mamba)装包

  • conda 走“预编译二进制包 + 环境级依赖解析”
  • 很多 C/系统依赖它会一并解决(更“省心”)
  • 缺点是:不同 channel(defaults/conda-forge)混用时要更小心

4) 体积与侵入性

venv:轻量、几乎零侵入

  • 标准库自带(Python 3.3+)
  • 创建快、环境小,适合工程/后端/脚本项目

Anaconda:很重

  • 自带大量科学计算包(动辄几个 GB)
  • 适合“一装就能干活”的数据科学新手或离线场景

Miniconda:轻很多

  • 只带 conda + 最基础组件,按需安装包
  • 工程上更常用(比 Anaconda 更干净)

“怎么选”最实用的建议

优先用 venv 的情况(工程常见)

  • Web/后端/脚本/一般应用开发
  • 依赖基本都是纯 Python 或常见 wheel(不会动不动编译)
  • 你希望环境尽量轻、尽量贴近 PyPI 生态
  • 团队使用 requirements.txt / pip-tools / poetry 等
    ✅ 典型:FastAPI/Django、爬虫、CLI 工具、内部服务

优先用 conda 的情况(数据科学/科研常见)

  • 你经常需要:numpy/scipy、pytorch/tensorflow、CUDA、GDAL、opencv 等
  • 经常踩到 “pip 装不上/编译失败/缺系统库”
  • 需要快速切 Python 版本 + 需要稳定的二进制依赖
    ✅ 典型:机器学习训练环境、Jupyter、地理信息/科学计算

最容易踩的坑(提醒)

1.不要在同一个环境里混着 conda 和 pip 乱装

  • 可以混,但要有原则:
    • 优先 conda install 能装的
    • conda 没有再 pip install
  • 否则容易依赖冲突或“环境漂移”

2.venv 不等于“能装所有东西”

  • 如果包需要系统依赖(编译工具链、C 库),venv 不会帮你装这些

常用命令对照

venv

cd xxx/xxx/myproject python -m venv .venv ## 安装项目依赖 pip install -r requirements.txt ## 后续使用时cd xxx/xxx/myproject source .venv/bin/activate ## 退出环境 deactivate 

conda(Miniconda/Anaconda 都一样)

conda create -n myenv python=3.11 conda activate myenv conda install numpy pandas ## 退出环境### conda deactivate

补充实战中遇到的问题

创建的虚拟环境是否存放在自定义目录下管理

venv

  • 单项目 / 希望可复制可迁移:放项目里 ./myvenv(团队协作最常见)
  • 本机多个项目共享/集中管理:放 xxx/xxx/myvenvs/xxx_envname(更像 conda)(目前还未尝试)

conda

  • 按名字建环境(推荐:全局统一管理)
conda create -n myenv python=3.7## 环境会放到 conda 的 默认 envs 目录(由 conda 配置决定;常见是 ## <conda安装目录>/envs 或 ~/.conda/envs)。## 你可以用 ## conda env list / conda info --envs 直接看到实际路径## 激活环境 conda activate myenv ## 直接使用名称即可
  • 按路径建环境(推荐:自定义管理虚拟环境的目录)
conda create -p xxx/xxx/xxx/xxx/myenv python=3.7## 环境就在你指定的那个目录## 激活环境 conda activate xxx/xxx/xxx/xxx/myenv ## 通常需要用“路径”激活
  • 想“自定义目录管理”但还想“只用名字激活”,怎么办?
    统一放到一个自定义 envs 总目录,并把这个目录加入 conda 的 envs_dirs(这样它就能按名字找到了)。之后你把环境建在这个目录下面,例如:
## 目前还未尝试 conda config --add envs_dirs /data/conda_envs conda create -n myenv python=3.7

Read more

RoboMaster SDK 终极指南:从零开始掌握机器人编程

RoboMaster SDK 终极指南:从零开始掌握机器人编程 【免费下载链接】RoboMaster-SDKDJI RoboMaster Python SDK and Sample Code for RoboMaster EP. 项目地址: https://gitcode.com/gh_mirrors/ro/RoboMaster-SDK 想要轻松控制DJI RoboMaster EP教育机器人吗?RoboMaster SDK就是你的完美选择!这是一个基于Python语言的开发工具包,让你用简单的代码就能实现复杂的机器人控制功能。无论你是编程新手还是资深开发者,都能快速上手这个强大的机器人开发平台。 🎯 快速上手:5分钟开启你的第一个机器人程序 核心概念速览 RoboMaster SDK采用了"模块化"设计理念,将机器人的各种功能封装成独立的模块。你可以像搭积木一样组合这些模块,创建出各种有趣的机器人应用。 环境配置三步走 第一步:安装Python环境 确保你的电脑上安装了Python 3.6.

By Ne0inhk
YOLOv8 模型移植到高通机器人RB5 平台详细指南

YOLOv8 模型移植到高通机器人RB5 平台详细指南

💡前言 随着边缘端 AI 推理需求的增长,将深度学习模型部署到嵌入式平台成为许多开发者的关注焦点。本文将详细介绍如何将 Ultralytics YOLOv8 训练后的目标检测模型移植到高通机器人RB5平台设备上运行,涵盖从 PyTorch 模型到最终部署的完整流程,并提供常见问题的解决方案和性能优化建议。除了该设备外,如果你手上是一台Thundercomm EB5平台的设备,同样可以按照该步骤完成模型训练,快尝试下吧。 1. 概述 1.1 背景介绍 本文档详细介绍如何将 Ultralytics YOLOv8 训练后的目标检测模型移植到高通机器人 RB5平台(Robotics RB5)上运行。RB5 平台是一款强大的机器人开发平台,搭载 Qualcomm QRB5165 处理器,支持 AI 加速和 5G 连接,非常适合边缘端 AI 推理任务。 1.2 模型移植流程 模型移植的完整流程如下: 1.

By Ne0inhk
汽车雷达在多径存在下的幽灵目标检测——论文阅读

汽车雷达在多径存在下的幽灵目标检测——论文阅读

汽车雷达在多径存在下的幽灵目标检测 D. Sharif, S. Murtala and G. S. Choi, “A Survey of Automotive Radar Misalignment Detection Techniques,” in IEEE Access, vol. 13, pp. 123314-123324, 2025, doi: 10.1109/ACCESS.2025.3584454. 摘要 共置多输入多输出(MIMO)技术已被广泛应用于汽车雷达系统,因为它能够以相对较少的发射和接收天线数量提供精确的角度估计。由于视距目标的发射方向(DOD)和到达方向(DOA)重合,MIMO信号处理允许形成更大的虚拟阵列用于角度查找。然而,多径反射是一个主要的限制因素,雷达信号可能从障碍物反弹,创建DOD不等于DOA的回波。因此,在具有多个散射体的复杂场景中,目标的直接路径可能被其他物体的间接路径破坏,导致不准确的角度估计或产生幽灵目标。

By Ne0inhk

openclaw多Agent和多飞书机器人配置

增加Agent多个飞书机器人 一个Agent尽量只用一个飞书机器人配置 一:先增加新的agent # 创建新的Agent,命名为new-agnet openclaw agents add new-agnet # 查看创建结果 openclaw agents list 二:新的agent与新的飞书链接 配置agnet下的channels: 在命令行输入 # 配置new-agnet机器人(替换为实际App ID和App Secret) openclaw config set agents.new-agnet.channels.feishu.appId "你的new-agnet 飞书 App ID" openclaw config set agents.new-agnet.channels.feishu.appSecret "你的new-agnet 飞书 App Secret"

By Ne0inhk