Skip to content

ImportError: cannot import name '_mplcairo' from partially initialized module 'mplcairo' #49

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
AgilentGCMS opened this issue Sep 13, 2023 · 9 comments

Comments

@AgilentGCMS
Copy link

I recently installed mplcairo 0.5 on MacOS with pip install mplcairo. However, when I try to import it, I get:

In [1]: import mplcairo
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
Cell In[1], line 1
----> 1 import mplcairo

File ~/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mplcairo/__init__.py:27
     23     _load_symbols()
     25 import matplotlib as mpl
---> 27 from . import _mplcairo
     28 from ._mplcairo import antialias_t, operator_t, get_options, set_options
     30 __all__ = [
     31     "antialias_t", "operator_t",
     32     "get_options", "set_options",
     33     "get_raw_buffer",
     34 ]

ImportError: cannot import name '_mplcairo' from partially initialized module 'mplcairo' (most likely due to a circular import) (/Users/sbasu1/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mplcairo/__init__.py)

I am using python 3.11.5.

@anntzer
Copy link
Collaborator

anntzer commented Sep 13, 2023

What are the contents of ~/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mplcairo/?
Any relevant output if you uninstall mplcairo and reinstall it with pip install -v mplcairo?

@AgilentGCMS
Copy link
Author

$ ls -l ~/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mplcairo/
total 64
-rw-r--r--  1 sbasu1 staff  3234 2023 Sep 13 09:18:58 __init__.py
drwxr-xr-x 14 sbasu1 staff   448 2023 Sep 13 09:18:58 __pycache__
-rw-r--r--  1 sbasu1 staff   664 2023 Sep 13 09:18:58 _backports.py
-rw-r--r--  1 sbasu1 staff  2422 2023 Sep 13 09:18:58 _util.py
-rw-r--r--  1 sbasu1 staff   155 2023 Sep 13 09:18:58 _version.py
-rw-r--r--  1 sbasu1 staff 17664 2023 Sep 13 09:18:58 base.py
-rw-r--r--  1 sbasu1 staff  1373 2023 Sep 13 09:18:58 gtk.py
-rw-r--r--  1 sbasu1 staff  1486 2023 Sep 13 09:18:58 gtk_native.py
-rw-r--r--  1 sbasu1 staff   605 2023 Sep 13 09:18:58 macosx.py
-rw-r--r--  1 sbasu1 staff  2131 2023 Sep 13 09:18:58 multipage.py
-rw-r--r--  1 sbasu1 staff  2219 2023 Sep 13 09:18:58 qt.py
-rw-r--r--  1 sbasu1 staff   815 2023 Sep 13 09:18:58 tk.py
-rw-r--r--  1 sbasu1 staff  1385 2023 Sep 13 09:18:58 wx.py
$ pip install -v mplcairo
Using pip 23.2.1 from /Users/sbasu1/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/pip (python 3.11)
Collecting mplcairo
  Using cached mplcairo-0.5-cp311-cp311-macosx_13_0_x86_64.whl
Requirement already satisfied: matplotlib>=2.2 in /Users/sbasu1/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from mplcairo) (3.7.2)
Requirement already satisfied: pillow in /Users/sbasu1/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from mplcairo) (9.5.0)
Requirement already satisfied: pycairo>=1.16.0 in /Users/sbasu1/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from mplcairo) (1.23.0)
Requirement already satisfied: contourpy>=1.0.1 in /Users/sbasu1/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from matplotlib>=2.2->mplcairo) (1.0.7)
Requirement already satisfied: cycler>=0.10 in /Users/sbasu1/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from matplotlib>=2.2->mplcairo) (0.11.0)
Requirement already satisfied: fonttools>=4.22.0 in /Users/sbasu1/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from matplotlib>=2.2->mplcairo) (4.42.1)
Requirement already satisfied: kiwisolver>=1.0.1 in /Users/sbasu1/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from matplotlib>=2.2->mplcairo) (1.4.5)
Requirement already satisfied: numpy>=1.20 in /Users/sbasu1/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from matplotlib>=2.2->mplcairo) (1.25.2)
Requirement already satisfied: packaging>=20.0 in /Users/sbasu1/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from matplotlib>=2.2->mplcairo) (23.1)
Requirement already satisfied: pyparsing>=2.3.1 in /Users/sbasu1/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from matplotlib>=2.2->mplcairo) (3.1.1)
Requirement already satisfied: python-dateutil>=2.7 in /Users/sbasu1/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from matplotlib>=2.2->mplcairo) (2.8.2)
Requirement already satisfied: six>=1.5 in /Users/sbasu1/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages (from python-dateutil>=2.7->matplotlib>=2.2->mplcairo) (1.16.0)
Installing collected packages: mplcairo
Successfully installed mplcairo-0.5

@anntzer
Copy link
Collaborator

anntzer commented Sep 14, 2023

Ugh, clearly something went wrong with the compilation.
Try again uninstalling and pip install --no-cache-dir -v mplcairo (to force a recompilation)? Although now I do suspect that this is a fallout from pypa/wheel#566 and I'll basically need to make a new release (which is unlikely to happen in the coming days, at least); in that case the most likely to work for you is to just install from git HEAD (where the above issue with wheel has been fixed): pip install -v git+https://github.com/anntzer/mplcairo.

@AgilentGCMS
Copy link
Author

The first suggestion, pip install --no-cache-dir -v mplcairo, did not solve the problem. However, pulling from the git head with pip install -v git+https://github.com/anntzer/mplcairo solved it. Thanks!

@AgilentGCMS
Copy link
Author

FYI, this bug is still there. I just installed mplcairo on a new computer, and import failed with this error. The fix, as described here, worked.

@DT-one
Copy link

DT-one commented Sep 4, 2024

For me your installation solution fails at Running command Getting requirements to build wheel with a ModuleNotFoundError: No module named 'cairo'

Not sure if there is something subtle I am missing, but I can import cairo in a script

@anntzer
Copy link
Collaborator

anntzer commented Sep 4, 2024

Is there no traceback at all?

@DT-one
Copy link

DT-one commented Sep 5, 2024

Why don't I dump the whole output

(base) C:\Users\xxxxx>pip install -v git+https://github.com/matplotlib/mplcairo
Using pip 24.0 from C:\Users\xxxxx\DevopsSetupPrograms\Anaconda\Lib\site-packages\pip (python 3.12)
WARNING: Ignoring invalid distribution ~plcairo (C:\Users\xxxxx\DevopsSetupPrograms\Anaconda\Lib\site-packages)
Collecting git+https://github.com/matplotlib/mplcairo
  Cloning https://github.com/matplotlib/mplcairo to c:\users\xxxxx\appdata\local\temp\pip-req-build-3123kxct
  Running command git version
  git version 2.36.1.windows.1
  Running command git clone --filter=blob:none https://github.com/matplotlib/mplcairo 'C:\Users\xxxxx\AppData\Local\Temp\pip-req-build-3123kxct'
  Cloning into 'C:\Users\xxxxx\AppData\Local\Temp\pip-req-build-3123kxct'...
  Updating files:   3% (2/60)
  Updating files:   5% (3/60)
  Updating files:   6% (4/60)
  Updating files:   8% (5/60)
  Updating files:  10% (6/60)
  Updating files:  11% (7/60)
  Updating files:  13% (8/60)
  Updating files:  15% (9/60)
  Updating files:  16% (10/60)
  Updating files:  18% (11/60)
  Updating files:  20% (12/60)
  Updating files:  21% (13/60)
  Updating files:  23% (14/60)
  Updating files:  25% (15/60)
  Updating files:  26% (16/60)
  Updating files:  28% (17/60)
  Updating files:  30% (18/60)
  Updating files:  31% (19/60)
  Updating files:  33% (20/60)
  Updating files:  35% (21/60)
  Updating files:  36% (22/60)
  Updating files:  38% (23/60)
  Updating files:  40% (24/60)
  Updating files:  41% (25/60)
  Updating files:  43% (26/60)
  Updating files:  45% (27/60)
  Updating files:  46% (28/60)
  Updating files:  48% (29/60)
  Updating files:  50% (30/60)
  Updating files:  51% (31/60)
  Updating files:  53% (32/60)
  Updating files:  55% (33/60)
  Updating files:  56% (34/60)
  Updating files:  58% (35/60)
  Updating files:  60% (36/60)
  Updating files:  61% (37/60)
  Updating files:  63% (38/60)
  Updating files:  65% (39/60)
  Updating files:  66% (40/60)
  Updating files:  68% (41/60)
  Updating files:  70% (42/60)
  Updating files:  71% (43/60)
  Updating files:  73% (44/60)
  Updating files:  75% (45/60)
  Updating files:  76% (46/60)
  Updating files:  78% (47/60)
  Updating files:  80% (48/60)
  Updating files:  81% (49/60)
  Updating files:  83% (50/60)
  Updating files:  85% (51/60)
  Updating files:  86% (52/60)
  Updating files:  88% (53/60)
  Updating files:  90% (54/60)
  Updating files:  91% (55/60)
  Updating files:  93% (56/60)
  Updating files:  95% (57/60)
  Updating files:  96% (58/60)
  Updating files:  98% (59/60)
  Updating files: 100% (60/60)
  Updating files: 100% (60/60), done.
  Running command git rev-parse HEAD
  0ef09b2992259d721e6ecab6096971d2569e540d
  Resolved https://github.com/matplotlib/mplcairo to commit 0ef09b2992259d721e6ecab6096971d2569e540d
  Running command git rev-parse HEAD
  0ef09b2992259d721e6ecab6096971d2569e540d
  Running command pip subprocess to install build dependencies
  Ignoring pycairo: markers 'os_name == "posix"' don't match your environment
  Collecting setuptools>=62
  Collecting setuptools_scm>=6.2 (from setuptools_scm[toml]>=6.2)
  Collecting pybind11>=2.8.0
  Collecting packaging>=20 (from setuptools_scm>=6.2->setuptools_scm[toml]>=6.2)
  WARNING: Ignoring invalid distribution ~plcairo (C:\Users\xxxxx\DevopsSetupPrograms\Anaconda\Lib\site-packages)
  Installing collected packages: setuptools, pybind11, packaging, setuptools_scm
  ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
  qtconsole 5.5.1 requires qtpy>=2.4.0, but you have qtpy 2.3.1 which is incompatible.
  streamlit 1.32.0 requires packaging<24,>=16.8, but you have packaging 24.1 which is incompatible.
  Successfully installed packaging-24.1 pybind11-2.13.5 setuptools-74.1.1 setuptools_scm-8.1.0
  Installing build dependencies ... done
  Running command Getting requirements to build wheel
  Traceback (most recent call last):
    File "C:\Users\xxxxx\DevopsSetupPrograms\Anaconda\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353, in <module>
      main()
    File "C:\Users\xxxxx\DevopsSetupPrograms\Anaconda\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 335, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "C:\Users\xxxxx\DevopsSetupPrograms\Anaconda\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 118, in get_requires_for_build_wheel
      return hook(config_settings)
             ^^^^^^^^^^^^^^^^^^^^^
    File "C:\Users\xxxxx\AppData\Local\Temp\pip-build-env-by9ggc49\overlay\Lib\site-packages\setuptools\build_meta.py", line 332, in get_requires_for_build_wheel
      return self._get_build_requires(config_settings, requirements=[])
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "C:\Users\xxxxx\AppData\Local\Temp\pip-build-env-by9ggc49\overlay\Lib\site-packages\setuptools\build_meta.py", line 302, in _get_build_requires
      self.run_setup()
    File "C:\Users\xxxxx\AppData\Local\Temp\pip-build-env-by9ggc49\overlay\Lib\site-packages\setuptools\build_meta.py", line 318, in run_setup
      exec(code, locals())
    File "<string>", line 37, in <module>
  ModuleNotFoundError: No module named 'cairo'
  error: subprocess-exited-with-error

  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> See above for output.

  note: This error originates from a subprocess, and is likely not a problem with pip.
  full command: 'C:\Users\xxxxx\DevopsSetupPrograms\Anaconda\python.exe' 'C:\Users\xxxxx\DevopsSetupPrograms\Anaconda\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py' get_requires_for_build_wheel 'C:\Users\xxxxx\AppData\Local\Temp\tmp2tts6ay3'
  cwd: C:\Users\xxxxx\AppData\Local\Temp\pip-req-build-3123kxct
  Getting requirements to build wheel ... error
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

(base) C:\Users\xxxxx>

@anntzer
Copy link
Collaborator

anntzer commented Sep 5, 2024

On Windows this will indeed not work: see the instructions at https://github.com/matplotlib/mplcairo?tab=readme-ov-file#windows instead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants