Skip to content

mitmproxy 11 installed via pip fails due to new urwid requirement - undefined symbol: PyUnicode_AS_UNICODE #7227

@wdormann

Description

@wdormann

Problem Description

In taking a system (Ubuntu 24.04 with miniconda (Python 3.12)) that successfully had mitmproxy 10 installed, upgrading to mitmproxy 11 via pip causes installation of a new urwid package, which now errors out with: undefined symbol: PyUnicode_AS_UNICODE

Steps to reproduce the behavior:

  1. Install mitmproxy 10 on a system with Python 3.12
  2. Upgrade via pip to mitmproxy 11.0.0
  3. Try running mitmproxy after upgrade

The prior pip-installed mitmproxy 10 had a dependency package urwid-mitmproxy. Perhaps this urwid package was created to avoid the PyUnicode_AS_UNICODE error? Or possibly urwid has changed since the version 2.1.2.1 in a way that introduces the PyUnicode_AS_UNICODE problem? Either way, before the upgrade:

tapioca@ubuntu2404:~/tapioca$ pip list | grep -E "urwid|mitmproxy"
mitmproxy               10.3.0
mitmproxy_rs            0.5.2
urwid-mitmproxy         2.1.2.1

Now, if I upgrade, I get a new version of urwid installed, presumably due to the use of WidgetWrap and potentially more.

tapioca@ubuntu2404:~/tapioca$ pip install mitmproxy --upgrade > /dev/null
tapioca@ubuntu2404:~/tapioca$ pip list | grep -E "urwid|mitmproxy"
mitmproxy               11.0.0
mitmproxy_rs            0.9.2
urwid                   2.6.15
urwid-mitmproxy         2.1.2.1

In this state, mitmproxy will fail to run:

tapioca@ubuntu2404:~/tapioca$ mitmproxy
Traceback (most recent call last):
  File "/home/tapioca/miniconda/bin/mitmproxy", line 8, in <module>
    sys.exit(mitmproxy())
             ^^^^^^^^^^^
  File "/home/tapioca/miniconda/lib/python3.12/site-packages/mitmproxy/tools/main.py", line 141, in mitmproxy
    from mitmproxy.tools import console
  File "/home/tapioca/miniconda/lib/python3.12/site-packages/mitmproxy/tools/console/__init__.py", line 1, in <module>
    from mitmproxy.tools.console import master
  File "/home/tapioca/miniconda/lib/python3.12/site-packages/mitmproxy/tools/console/master.py", line 14, in <module>
    import urwid
  File "/home/tapioca/miniconda/lib/python3.12/site-packages/urwid/__init__.py", line 30, in <module>
    from urwid.canvas import (
  File "/home/tapioca/miniconda/lib/python3.12/site-packages/urwid/canvas.py", line 30, in <module>
    from urwid.str_util import calc_text_pos, calc_width
ImportError: /home/tapioca/miniconda/lib/python3.12/site-packages/urwid/str_util.cpython-312-x86_64-linux-gnu.so: undefined symbol: PyUnicode_AS_UNICODE

System Information

Paste the output of "mitmproxy --version" here.

(see above)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions