为什么导入在这个 ROS python 脚本中有效
Why import works in this ROS python script
我正在使用 ROS packages and coming from this 教程。考虑到当前工作目录或 PATH 中列出的任何其他目录中缺少 AddTwoIntsResponse
,此 import 语句出人意料地有效 。另外,为什么会导入 .srv?
# add_two_ints_server.py
from beginner_tutorials.srv import AddTwoInts, AddTwoIntsResponse
当前工作目录是~/catkin_ws/src/beginner_tutorials/srv
这是我的 ROS 目录布局:
catkin_ws
|-- src
| `-- beginner_tutorials
| |-- scripts
| | `-- add_two_ints_server.py
| `-- srv
| `-- AddTwoInts.srv
|-- build
`-- devel
AddTwoInts.srv的内容是:
int64 a
int64 b
---
int64 sum
根据我的理解,这应该会引发 ImportError: cannot import name 'AddTwoIntsResponse'
、,但不会。导入任何其他文件说:from beginner_tutorials.srv import foo
抛出一个 ImportError.
我的理解哪里出错了?
|-- src
| `-- beginner_tutorials
| |-- scripts
| | `-- add_two_ints_server.py
| `-- srv
| `-- AddTwoInts.srv
|-- build
|-- devel // this is where your modules are imported from
当您使用 catkin_make 构建包时,'catkin` 会为您在 .srv 文件中定义的服务类型生成相关的 python 文件,并将它们放在 catkin_ws/devel/lib/你的-python-version/dist-packages/package-name/srv.
如果你的工作区是 sourced,catkin_ws/devel/lib/your-python-version/dist-packages/ 已经添加到你的 PYTHONPATH 中,那就是你是如何成功导入它们的。
对于您正在使用的教程包,如果您安装了教程的二进制文件,即使您没有找到当前的 catkin 目录,导入也可能会起作用。这样 python 模块位于 /opt/ros/ros-version/lib/your-python-version/dist-packages/ 这又是 PYTHONPATH 的一部分。 (如果 ROS env 可用)
我正在使用 ROS packages and coming from this 教程。考虑到当前工作目录或 PATH 中列出的任何其他目录中缺少 AddTwoIntsResponse
,此 import 语句出人意料地有效 。另外,为什么会导入 .srv?
# add_two_ints_server.py
from beginner_tutorials.srv import AddTwoInts, AddTwoIntsResponse
当前工作目录是~/catkin_ws/src/beginner_tutorials/srv
这是我的 ROS 目录布局:
catkin_ws
|-- src
| `-- beginner_tutorials
| |-- scripts
| | `-- add_two_ints_server.py
| `-- srv
| `-- AddTwoInts.srv
|-- build
`-- devel
AddTwoInts.srv的内容是:
int64 a
int64 b
---
int64 sum
根据我的理解,这应该会引发 ImportError: cannot import name 'AddTwoIntsResponse'
、,但不会。导入任何其他文件说:from beginner_tutorials.srv import foo
抛出一个 ImportError.
我的理解哪里出错了?
|-- src
| `-- beginner_tutorials
| |-- scripts
| | `-- add_two_ints_server.py
| `-- srv
| `-- AddTwoInts.srv
|-- build
|-- devel // this is where your modules are imported from
当您使用 catkin_make 构建包时,'catkin` 会为您在 .srv 文件中定义的服务类型生成相关的 python 文件,并将它们放在 catkin_ws/devel/lib/你的-python-version/dist-packages/package-name/srv.
如果你的工作区是 sourced,catkin_ws/devel/lib/your-python-version/dist-packages/ 已经添加到你的 PYTHONPATH 中,那就是你是如何成功导入它们的。
对于您正在使用的教程包,如果您安装了教程的二进制文件,即使您没有找到当前的 catkin 目录,导入也可能会起作用。这样 python 模块位于 /opt/ros/ros-version/lib/your-python-version/dist-packages/ 这又是 PYTHONPATH 的一部分。 (如果 ROS env 可用)