I did resolve the issue, it was mistake on my part in generating the RTT typekit for a custom message definition. I had originally stored the message definition in one package, and called ros_generate_rtt_typekit in a different package. I had since copied the message definition to the same package I was calling ros_generate_rtt_typekit in to get rid of that external dependency, but I think that just confused everything so that anytime I did ros.import(my_package) it tried to also import the RTT message type from the other package. Why this causes the exact behavior I was seeing, I'm not sure, and I'm not sure this solution will help anyone else, but the fix for me in the end was to get rid of any reference to the dependency in the external package, do ros_generate_rtt_typekit in my_package where the message is defined, and do a catkin clean before building again.