MAVProxy icon indicating copy to clipboard operation
MAVProxy copied to clipboard

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

Open Ryanf55 opened this issue 2 years ago • 2 comments

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

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 <module>
    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 <module>
    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 <module>
    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 <module>
    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 <module>
    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 <module>
    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 <module>
    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

Ryanf55 avatar Aug 05 '23 18:08 Ryanf55

How should we install mavproxy in a venv? The environment setup doesn't work in a venv on ubuntu 22. https://ardupilot.org/mavproxy/docs/development/mavdevenvlinux.html#linux-development-environment

python3 -m venv .venv
. .venv/bin/activate
python3 -m setup.py build install --user
...

Using /home/ryan/.local/lib/python3.10/site-packages/pyserial-3.5-py3.10.egg
Searching for pynmeagps==1.0.43
Best match: pynmeagps 1.0.43

Using /home/ryan/.local/lib/python3.10/site-packages
Searching for pymavlink==2.4.42
Best match: pymavlink 2.4.42

Using /home/ryan/.local/lib/python3.10/site-packages
Searching for numpy==1.26.4
Best match: numpy 1.26.4
Installing f2py script to /home/ryan/.local/bin

Using /home/ryan/.local/lib/python3.10/site-packages
Searching for lxml==5.1.0
Best match: lxml 5.1.0

Using /home/ryan/.local/lib/python3.10/site-packages
Searching for future==1.0.0
Best match: future 1.0.0
Installing futurize script to /home/ryan/.local/bin
Installing pasteurize script to /home/ryan/.local/bin

Using /home/ryan/.local/lib/python3.10/site-packages
Finished processing dependencies for MAVProxy==1.8.71
/home/ryan/Dev/ardu_ws/src/MAVProxy/.venv/bin/python3: Error while finding module specification for 'setup.py' (ModuleNotFoundError: __path__ attribute not found on 'setup' while trying to find 'setup.py'). Try using 'setup' instead of 'setup.py' as the module name.

Ryanf55 avatar Nov 04 '24 00:11 Ryanf55

We started adding dependencies to the extras: https://github.com/ArduPilot/MAVProxy/pull/1568

Ryanf55 avatar May 21 '25 05:05 Ryanf55