cool-easter-32542
10/10/2024, 2:23 PMpymupdf as a dependency and run pants run, pants can't find pymupdf.
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
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
Use import pymupdf instead of import fitz, and update one’s code to match.
or
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 :
poetry_requirements(
name="poetry",
module_mapping={"pymupdf": ["pymupdf"]}
)
I also made a simple PR on #21516 if needed.
pantsbuild/pantscool-easter-32542
10/16/2024, 11:37 AM