文章目录
- 引题
- 解决方法
- 方法一 将三方库与pkg放在一起
- 方法二 将三方库放入pythonpath目录
引题
ROS2在执行ros2 pkg create --build-type ament_python **
创建python包时,有时候会涉及外部库的导入,这里讲解一下如何配置PYTHONPATH变量让程序顺利找到外部库。
解决方法
此处以ROS2 Humble版本为例
echo $PYTHONPATH# --- OUT PUT ---
/opt/ros/humble/lib/python3.10/site-packages:/opt/ros/humble/local/lib/python3.10/dist-packages
当我们在建立新的pkg时会遇到导入三方库放置在统一目录下找不到的情况,这种情况下我们有2种解决方法:
方法一 将三方库与pkg放在一起
ros2 pkg create --build-type ament_python humble_python_testtree .
.
└── humble_python_test├── humble_python_test│ └── __init__.py├── package.xml├── resource│ └── humble_python_test├── setup.cfg├── setup.py└── test├── test_copyright.py├── test_flake8.py└── test_pep257.py4 directories, 8 files
如果依赖库是py程序,与__init__.py
放同级,在写程序时通过import即可,例如导入一个grasp_control.py
的外部库
tree humble_python_test/
humble_python_test/
├── __init__.py
├── app.py
└── grasp_control.py
app.py应当如下所示
import .grasp_control
...
方法二 将三方库放入pythonpath目录
如/opt/ros/humble/local/lib/python3.10/dist-packages
目录下
或者新建一个目录更新PYTHONPATH环境变量,使用
export PYTHONPATH=$PYTHONPATH:/home/user/PythonLib/3.10/site-packages
设置,这种方法不但能导入.py程序,同时动态库、静态库也可通过此方法导入并找到。