Cannot import custom message after successful `catkin_make`
I am having issues using a custom message. I have the message file in the /msg
folder, I have adjusted theCMakeList.txt
and so on too. However, when I run the launch file for my package that uses the custom message, it tells me that the module does not exist. ImportError: no module named my_package.msg
.
I am trying to import the message into a script in the src/
directory of the package where the message itself is in the msg/
directory.
I have also been running source devel/setup.bash
after every catkin_make
(Perhaps that is specific to the tutorial I am working through?). Also been running rospack profile
. Autocompletion works for the named package, but just this import issue that fails. But it gets more interesting...
I found that the custom message was indeed generated by catkin_make
, and I found it in /home/user/catkin_ws/devel/lib/python2.7/dist-packages/my_package/msg/
. However, all the files there were preceded with underscores: _MyMsg.py
, __init__.py
and their compiled counterparts: _MyMsg.pyc
and __init__.pyc
. I managed to import and use the message with the import statement just importing the entire msg module (the final folder in the path above), then I had to use the custom message from that module:
# import entire module
from my_package import msg
# create an object from my custom message type
cust_msg = msg.MyMsg()
If anyone can explain to my what I might be doing wrong, I'd love to know!
Just to mention that I didn't fall into the common trap: the name of my package and the scripts that import the custom message were not the same ;)
I also tried putting __init__.py
files in the relevant folders to see if not being a module itself was preventing the imports.
Any ideas what I am doing wrong?
There is a very similar question here - but as I already mentioned, I am indeed sourcing the setup.bash
file
Edit:
I have tested it from another package that I made, and am able to import the custom message without any issues. So it there a problem to import a custom message from within the src/
folder of the package where the custom message is defined?
Added further information and test results
Do you have message definitions stored in the
msg
andsrc
directories?No, only in the
/msg
directory withinmy_package
.