文章目錄
- 引題
- 解決方法
- 方法一 將三方庫與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程序,同時動態庫、靜態庫也可通過此方法導入并找到。