COL-1002
ros2
test_error
ai_generated
true
ModuleNotFoundError: No module named 'my_package' during colcon test
ID: ros2/colcon-test-import-error-pkg-name
88%Fix Rate
87%Confidence
1Evidence
2023-11-20First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| ROS2 Foxy Fitzroy | active | — | — | — |
| ROS2 Galactic Geochelone | active | — | — | — |
| ROS2 Humble Hawksbill | active | — | — | — |
Root Cause
The Python package name in setup.py or setup.cfg does not match the actual directory name, or the package is not installed in the Python environment due to missing --symlink-install or build path issues.
generic中文
setup.py 或 setup.cfg 中的 Python 包名称与实际目录名称不匹配,或者由于缺少 --symlink-install 或构建路径问题,包未安装到 Python 环境中。
Official Documentation
https://docs.ros.org/en/humble/Tutorials/Basic/Colcon-Tutorial.htmlWorkarounds
-
90% success Ensure the Python package name in setup.py matches the directory name. For example, if your package directory is 'my_package', set `name='my_package'` in setup.py. Then rebuild with `colcon build --symlink-install` and run tests with `colcon test --packages-select my_package`.
Ensure the Python package name in setup.py matches the directory name. For example, if your package directory is 'my_package', set `name='my_package'` in setup.py. Then rebuild with `colcon build --symlink-install` and run tests with `colcon test --packages-select my_package`.
-
85% success If using ament_python, verify that the `entry_points` in setup.py are correct and that the test directory has an `__init__.py` file. Run `colcon test --event-handlers console_direct+` to see the full error trace.
If using ament_python, verify that the `entry_points` in setup.py are correct and that the test directory has an `__init__.py` file. Run `colcon test --event-handlers console_direct+` to see the full error trace.
中文步骤
Ensure the Python package name in setup.py matches the directory name. For example, if your package directory is 'my_package', set `name='my_package'` in setup.py. Then rebuild with `colcon build --symlink-install` and run tests with `colcon test --packages-select my_package`.
If using ament_python, verify that the `entry_points` in setup.py are correct and that the test directory has an `__init__.py` file. Run `colcon test --event-handlers console_direct+` to see the full error trace.
Dead Ends
Common approaches that don't work:
-
50% fail
Running pip install -e . in the package root may install it temporarily, but colcon will overwrite it on next build, and it doesn't fix the root cause.
-
30% fail
Deleting the entire build directory and rebuilding is overkill; the issue is usually a configuration mismatch, not a corrupted build.