<#21517 pymupdf error when I do `pants run`> Issue...
# github-notifications
c
#21517 pymupdf error when I do `pants run` Issue created by tsanyqudsi Describe the bug when we add
pymupdf
as a dependency and run
pants run
,
pants
can't find
pymupdf
.
Copy code
15:44:52.05 [INFO] Canceled: Building apps.-REDACTED-/start-server.pex with 8 requirements: blacksheep<3.0.0,>=2.0.7, markdown-pdf<2.0.0,>=1.3, matplotlib<4.0.0,>=3.9.1.post1, numpy<3.0.0,>=2.0.1, pydantic<3.0.0,>=2.... (82 characters truncated)
15:45:31.64 [INFO] Completed: Building apps.-REDACTED-/start-server.pex with 8 requirements: blacksheep<3.0.0,>=2.0.7, markdown-pdf<2.0.0,>=1.3, matplotlib<4.0.0,>=3.9.1.post1, numpy<3.0.0,>=2.0.1, pydantic<3.0.0,>=2.... (82 characters truncated)
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "-REDACTED-/.pex/unzipped_pexes/72157a8a4ba437ba62effe8d956b59ba68f9bfa3/__main__.py", line 106, in <module>
    bootstrap_pex(__entry_point__, execute=__execute__, venv_dir=__venv_dir__)
  File "-REDACTED-/.pex/unzipped_pexes/72157a8a4ba437ba62effe8d956b59ba68f9bfa3/.bootstrap/pex/pex_bootstrapper.py", line 627, in bootstrap_pex
    pex.PEX(entry_point).execute()
  File "-REDACTED-/.pex/unzipped_pexes/72157a8a4ba437ba62effe8d956b59ba68f9bfa3/.bootstrap/pex/pex.py", line 562, in execute
    sys.exit(self._wrap_coverage(self._wrap_profiling, self._execute))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "-REDACTED-/.pex/unzipped_pexes/72157a8a4ba437ba62effe8d956b59ba68f9bfa3/.bootstrap/pex/pex.py", line 469, in _wrap_coverage
    return runner(*args)
           ^^^^^^^^^^^^^
  File "-REDACTED-/.pex/unzipped_pexes/72157a8a4ba437ba62effe8d956b59ba68f9bfa3/.bootstrap/pex/pex.py", line 500, in _wrap_profiling
    return runner(*args)
           ^^^^^^^^^^^^^
  File "-REDACTED-/.pex/unzipped_pexes/72157a8a4ba437ba62effe8d956b59ba68f9bfa3/.bootstrap/pex/pex.py", line 606, in _execute
    return self.execute_entry(
           ^^^^^^^^^^^^^^^^^^^
  File "-REDACTED-/.pex/unzipped_pexes/72157a8a4ba437ba62effe8d956b59ba68f9bfa3/.bootstrap/pex/pex.py", line 808, in execute_entry
    return self.execute_entry_point(entry_point)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "-REDACTED-/.pex/unzipped_pexes/72157a8a4ba437ba62effe8d956b59ba68f9bfa3/.bootstrap/pex/pex.py", line 825, in execute_entry_point
    runner = entry_point.resolve()
             ^^^^^^^^^^^^^^^^^^^^^
  File "-REDACTED-/.pex/unzipped_pexes/72157a8a4ba437ba62effe8d956b59ba68f9bfa3/.bootstrap/pex/dist_metadata.py", line 1007, in resolve
    module = importlib.import_module(self.module)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "-REDACTED-/.pyenv/versions/3.11.9/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "-REDACTED-/.pex/unzipped_pexes/72157a8a4ba437ba62effe8d956b59ba68f9bfa3/src/server.py", line 2, in <module>
    from <http://src.app|src.app> import app
  File "-REDACTED-/.pex/unzipped_pexes/72157a8a4ba437ba62effe8d956b59ba68f9bfa3/src/app.py", line 5, in <module>
    from src.api.pdf import pdf
  File "-REDACTED-/.pex/unzipped_pexes/72157a8a4ba437ba62effe8d956b59ba68f9bfa3/src/api/pdf.py", line 5, in <module>
    from markdown_pdf import MarkdownPdf, Section
  File "-REDACTED-/.pex/installed_wheels/bb20db7266614d5c383b6bbd4574b10baef72c6e349258a5cbf8a0684514df84/markdown_pdf-1.3-py3-none-any.whl/markdown_pdf/__init__.py", line 4, in <module>
    import fitz
  File "-REDACTED-/.pex/installed_wheels/69087851375d87061701422cfb08bc02fbd540ba767489b5b813c5303084663b/PyMuPDF-1.24.2-cp311-none-manylinux2014_x86_64.whl/fitz/__init__.py", line 29, in <module>
    from . import extra
  File "-REDACTED-/.pex/installed_wheels/69087851375d87061701422cfb08bc02fbd540ba767489b5b813c5303084663b/PyMuPDF-1.24.2-cp311-none-manylinux2014_x86_64.whl/fitz/extra.py", line 10, in <module>
    from . import _extra
ImportError: libmupdf.so.24.1: cannot open shared object file: No such file or directory
the problem is pants still map
pymupdf
to
fitz
as the default. However, according to the documentation the issue also occurs at Jupiter Notebook in a way
Copy code
ImportError: /opt/conda/lib/python3.11/site-packages/pymupdf/libmupdf.so.24.4: undefined symbol: fz_pclm_write_options_usage
I'm not using Jupiter Notebook nor M1, but after I check this repo, #12774 introduced new default mapping where
pants
mapped
pymupdf
to
fitz
. However, now in the documentation stated that it's no longer expose
fitz
Copy code
Use import pymupdf instead of import fitz, and update one’s code to match.
or
Copy code
Or use import pymupdf as fitz. However this has not been well tested.
Pants version 2.22 OS Linux Additional info in order to workaround this problem, map the package to its original name, for example in poetry :
Copy code
poetry_requirements(
    name="poetry",
    module_mapping={"pymupdf": ["pymupdf"]}
)
I also made a simple PR on #21516 if needed. pantsbuild/pants