ROS Kinetic - How to get roslaunch rosbridge_server with venv?
I have a project with venv
that works just fine, but when we need to run roslaunch rosbridge_server rosbridge_websocket.launch
it will result in the error below unless we deactivate
venv.
process[rosbridge_websocket-2]: started with pid [10182]
process[rosapi-3]: started with pid [10183]
Failed to load Python extension for LZ4 support. LZ4 compression will not be available.
Failed to load Python extension for LZ4 support. LZ4 compression will not be available.
registered capabilities (classes):
- <class 'rosbridge_library.capabilities.call_service.CallService'>
- <class 'rosbridge_library.capabilities.advertise.Advertise'>
- <class 'rosbridge_library.capabilities.publish.Publish'>
- <class 'rosbridge_library.capabilities.subscribe.Subscribe'>
- <class 'rosbridge_library.capabilities.defragmentation.Defragment'>
- <class 'rosbridge_library.capabilities.advertise_service.AdvertiseService'>
- <class 'rosbridge_library.capabilities.service_response.ServiceResponse'>
- <class 'rosbridge_library.capabilities.unadvertise_service.UnadvertiseService'>
Traceback (most recent call last):
File "/opt/ros/kinetic/lib/rosbridge_server/rosbridge_websocket", line 44, in <module>
from rosbridge_server import RosbridgeWebSocket, ClientManager
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosbridge_server/__init__.py", line 4, in <module>
from .udp_handler import RosbridgeUdpSocket,RosbridgeUdpFactory
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosbridge_server/udp_handler.py", line 6, in <module>
from twisted.internet.protocol import DatagramProtocol,Factory
ImportError: No module named 'twisted'
I am assuming this is because there's no module named twisted
installed in the virtual environment but it is installed on my computer. Following this hypothesis, this means that making roslaunch rosbridge_server rosbridge_websocket.launch
work would require to install all the dependencies that it needs in venv? How would one go to do that?
Asked by Loomy on 2019-08-27 13:49:03 UTC
Comments
Not an answer, but you might be able to get things to work by allowing the venv to import all "system site packages" at creation time. That would resolve at least the system dependencies of
rosbridge_server
(ie: those installed usingapt
during installation of the binary package).Allowing system site packages does reduce the isolation of the venv though.
A proper approach would be to list all the dependencies of
rosbridge_server
and then install those into the virtual environment.Asked by gvdhoorn on 2019-08-28 02:42:15 UTC