在conda虚拟环境中编译和运行ROS2

方法一

之前在Jetson上运行ROS1时便遇到过该问题,当时我的解决方法是,配置 conda 虚拟环境为默认 python 环境

以创建的 py38 为例:

  • 将相关 ROS 程序第一行的环境路径更改为 conda 虚拟环境的路径,仅对当前程序有效。
bash 复制代码
#!/home/your_username/miniconda3/envs/py38/bin/python3
  • 添加 conda 虚拟环境的环境变量到 .bashrc 文件中,对所有程序有效,且不受程序第一行环境路径影响。
bash 复制代码
# 末尾插入以下内容并保存,替换 your_username 为用户名
export PYTHONPATH=/home/your_username/miniconda3/envs/py38/lib/python3.8/site-packages:$PYTHONPATH
bash 复制代码
source ~/.bashrc

详见: Jetson全流程笔记转载与集合 第12部分

方法二

我的平台和编程语言:Ubuntu22.04,conda虚拟环境,ROS2,Python

采用方法一,现在存在两个问题:

  • 将conda的虚拟环境配置为默认python环境,导致我在运行uv虚拟环境时报错,且指向conda环境,具体原因我还没搞明白。
  • 如果我不将conda的虚拟环境配置为默认python环境,那么ROS2编译后将从系统python环境运行,而我的系统环境没有安装任何依赖包,导致无法运行。

因此需要在conda虚拟环境中编译和运行ROS2,步骤如下:

  • 在虚拟环境中安装相关的依赖包和ROS2编译工具
bash 复制代码
# ROS2 Python包
pip install catkin_pkg empy ifcfg lark lark-parser netifaces
# ROS2 编译工具
pip install colcon-common-extensions
  • 在激活的虚拟环境中编译,如下所示:
bash 复制代码
zb@zb-pc:~$ conda activate mujoco
(mujoco) zb@zb-pc:~$ cd sauv_ws
(mujoco) zb@zb-pc:~/sauv_ws$ colcon build --symlink-install
  • 检查和运行
    编译之后,检查install文件夹下的内容,节点第一行将指向为conda虚拟环境,此时节点将在conda虚拟环境下运行。
  • 作为对比,以下展示非虚拟环境编译结果
bash 复制代码
(mujoco) zb@zb-pc:~/sauv_ws$ conda deactivate
zb@zb-pc:~/sauv_ws$ colcon build --symlink-install
相关推荐
马剑威(威哥爱编程)13 小时前
Python 智能体开发实战 01:装了三遍环境还在报错?虚拟环境和 DeepSeek 一次配到位
开发语言·人工智能·python·agent
卷无止境14 小时前
Skill 的安全边界在哪里:风险来源、验证思路与用户可用的防线
后端·python
TomEval14 小时前
【测AI】第22篇:Agent 系统测试方法 — AI 学会“动手“了
人工智能·python·prompt·aigc·测试用例
速易达网络14 小时前
如何“训练”一个 .task 模型
python
PiaoKe___14 小时前
云手机技术解析:从 ARM 虚拟化到 Python 自动化实战
python·智能手机·自动化
学习论之费曼学习法14 小时前
无人值守AI内容矩阵实战(10):Windows 上让 Python 进程 7×24 活着
人工智能·windows·python·矩阵·powershell·进程守护
Norna15 小时前
锁文件里明明有哈希,PDM 为什么说没有?
python
大侠在此在在此15 小时前
我花了不到1块钱,用python把自己一年的1500次会话做成了个人知识库
python·llm
Jino15 小时前
900×2100 的门洞,展开面积却是 3.4 ㎡ —— 不锈钢核价引擎的七条口径
python
贝壳69015 小时前
Python 布尔数组选型:list、numpy.bool_、bitarray、RoaringBitmap、bool-hybrid-array 各管一段
python