ArduPilot / ArduPilot/MAVProxy

BUG: Mavproxy from Pip is missing dependencies causing Import Errors.

Open
#1,215 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
595
Forks
773
Avg merge
2d 6h
Merged PRs (30d)
18

Description

# Information

* OS: Ubuntu 23 , and reproduced on Windows 10
* Python version: Python `3.11.4`
* Pip version: `pip-23.2.1`
* Method to install mavproxy: pip

## Steps to reproduce

```bash
python3 -m venv .mavproxy
. .mavproxy/bin/activate
python3 -m pip install mavproxy
which mavproxy.py
>>> /home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/bin/mavproxy.py
```
```
(.mavproxy) ryan@ryan-B650-970:~/Development/ardu_ws/src/MAVProxy$ mavproxy.py --console --map --aircraft test --master=:14550 --moddebug=3
Connect :14550 source_system=255
No module named 'wx'
Traceback (most recent call last):
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/bin/mavproxy.py", line 679, in import_package
mod = __import__(name)
^^^^^^^^^^^^^^^^
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/lib/python3.11/site-packages/MAVProxy/modules/mavproxy_console.py", line 9, in
from MAVProxy.modules.lib import wxconsole
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/lib/python3.11/site-packages/MAVProxy/modules/lib/wxconsole.py", line 11, in
from MAVProxy.modules.lib import win_layout
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/lib/python3.11/site-packages/MAVProxy/modules/lib/win_layout.py", line 4, in
import os, wx, pickle
ModuleNotFoundError: No module named 'wx'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/bin/mavproxy.py", line 526, in load_module
m = import_package(modpath)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/bin/mavproxy.py", line 682, in import_package
mod = __import__(name)
^^^^^^^^^^^^^^^^
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/lib/python3.11/site-packages/MAVProxy/modules/mavproxy_console.py", line 9, in
from MAVProxy.modules.lib import wxconsole
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/lib/python3.11/site-packages/MAVProxy/modules/lib/wxconsole.py", line 11, in
from MAVProxy.modules.lib import win_layout
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/lib/python3.11/site-packages/MAVProxy/modules/lib/win_layout.py", line 4, in
import os, wx, pickle
ModuleNotFoundError: No module named 'wx'

No module named 'console'
Traceback (most recent call last):
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/bin/mavproxy.py", line 679, in import_package
mod = __import__(name)
^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'console'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/bin/mavproxy.py", line 526, in load_module
m = import_package(modpath)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/bin/mavproxy.py", line 682, in import_package
mod = __import__(name)
^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'console'

Failed to load module: No module named 'console'.
No module named 'cv2'
Traceback (most recent call last):
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/bin/mavproxy.py", line 528, in load_module
module = m.init(mpstate, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/lib/python3.11/site-packages/MAVProxy/modules/mavproxy_map/__init__.py", line 927, in init
return MapModule(mpstate)
^^^^^^^^^^^^^^^^^^
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/lib/python3.11/site-packages/MAVProxy/modules/mavproxy_map/__init__.py", line 64, in __init__
from MAVProxy.modules.mavproxy_map import mp_slipmap
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/lib/python3.11/site-packages/MAVProxy/modules/mavproxy_map/mp_slipmap.py", line 13, in
import cv2
ModuleNotFoundError: No module named 'cv2'

No module named 'map'
Traceback (most recent call last):
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/bin/mavproxy.py", line 679, in import_package
mod = __import__(name)
^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'map'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/bin/mavproxy.py", line 526, in load_module
m = import_package(modpath)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/bin/mavproxy.py", line 682, in import_package
mod = __import__(name)
^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'map'

Failed to load module: No module named 'map'.
no script test/mavinit.scr
Log Directory: test/logs/2023-08-05/flight1
Telemetry log: test/logs/2023-08-05/flight1/flight.tlog
Waiting for heartbeat from :14550
MAV> 'WPModule' object has no attribute 'menu'
Traceback (most recent call last):
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/bin/mavproxy.py", line 1044, in periodic_tasks
m.idle_task()
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/lib/python3.11/site-packages/MAVProxy/modules/mavproxy_wp.py", line 224, in idle_task
self.module('map').add_menu(self.menu)
^^^^^^^^^
AttributeError: 'WPModule' object has no attribute 'menu'

'RallyModule' object has no attribute 'menu'
Traceback (most recent call last):
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/bin/mavproxy.py", line 1044, in periodic_tasks
m.idle_task()
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/lib/python3.11/site-packages/MAVProxy/modules/mavproxy_rally.py", line 80, in idle_task
self.module('map').add_menu(self.menu)
^^^^^^^^^
AttributeError: 'RallyModule' object has no attribute 'menu'

'FenceModule' object has no attribute 'menu'
Traceback (most recent call last):
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/bin/mavproxy.py", line 1044, in periodic_tasks
m.idle_task()
File "/home/ryan/Development/ardu_ws/src/MAVProxy/.mavproxy/lib/python3.11/site-packages/MAVProxy/modules/mavproxy_fence.py", line 71, in idle_task
self.module('map').add_menu(self.menu)
^^^^^^^^^
AttributeError: 'FenceModule' object has no attribute 'menu'
```

## Workaround

```
python3 -m pip install opencv-python matplotlib wxPython
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Reproduce the install in a fresh Python 3.11 virtual environment, then inspect the installed paths under MAVProxy/modules/mavproxy_console.py, modules/lib/win_layout.py, and modules/mavproxy_map/mp_slipmap.py. Verify that a pip installation provides the dependencies needed by the console and map modules, and confirm the reported import and follow-on menu errors no longer occur when running the documented command.

Written by the indexing model from the issue text.

Assessment

Tech stack
matplotlib, opencv, python
Domain
build-system, cli
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.