pearu/pylibtiff

Failure to install with pip on Windows

rleigh-codelibre opened this issue · 5 comments

Python 3.12 with a clean venv. Note the ModuleNotFoundError: No module named 'numpy'.

rleigh@merrilin MINGW64 ~
$ /c/Python312/python.exe -m venv /tmp/test-libtiff

rleigh@merrilin MINGW64 ~
$ . /tmp/test-libtiff/Scripts/activate
(test-libtiff)
rleigh@merrilin MINGW64 ~
$ pip install libtiff
Collecting libtiff
  Downloading libtiff-0.4.2.tar.gz (129 kB)
     -------------------------------------- 130.0/130.0 kB 1.3 MB/s eta 0:00:00
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'error'
  error: subprocess-exited-with-error

  Getting requirements to build wheel did not run successfully.
  exit code: 1

  [20 lines of output]
  Traceback (most recent call last):
    File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353, in <module>
      main()
    File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\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\rleigh\AppData\Local\Temp\test-libtiff\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\rleigh\AppData\Local\Temp\pip-build-env-2t_xknn3\overlay\Lib\site-packages\setuptools\build_meta.py", line 325, in get_requires_for_build_wheel
      return self._get_build_requires(config_settings, requirements=['wheel'])
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "C:\Users\rleigh\AppData\Local\Temp\pip-build-env-2t_xknn3\overlay\Lib\site-packages\setuptools\build_meta.py", line 295, in _get_build_requires
      self.run_setup()
    File "C:\Users\rleigh\AppData\Local\Temp\pip-build-env-2t_xknn3\overlay\Lib\site-packages\setuptools\build_meta.py", line 487, in run_setup
      super().run_setup(setup_script=setup_script)
    File "C:\Users\rleigh\AppData\Local\Temp\pip-build-env-2t_xknn3\overlay\Lib\site-packages\setuptools\build_meta.py", line 311, in run_setup
      exec(code, locals())
    File "<string>", line 77, in <module>
  ModuleNotFoundError: No module named 'numpy'
  [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
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.
(test-libtiff)
rleigh@merrilin MINGW64 ~
$ pip install numpy
Collecting numpy
  Downloading numpy-1.26.4-cp312-cp312-win_amd64.whl.metadata (61 kB)
     -------------------------------------- 61.0/61.0 kB 651.3 kB/s eta 0:00:00
Downloading numpy-1.26.4-cp312-cp312-win_amd64.whl (15.5 MB)
   ---------------------------------------- 15.5/15.5 MB 8.6 MB/s eta 0:00:00
Installing collected packages: numpy
Successfully installed numpy-1.26.4
(test-libtiff)
rleigh@merrilin MINGW64 ~
$ pip install libtiff
Collecting libtiff
  Using cached libtiff-0.4.2.tar.gz (129 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'error'
  error: subprocess-exited-with-error

  Getting requirements to build wheel did not run successfully.
  exit code: 1

  [20 lines of output]
  Traceback (most recent call last):
    File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353, in <module>
      main()
    File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\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\rleigh\AppData\Local\Temp\test-libtiff\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\rleigh\AppData\Local\Temp\pip-build-env-hc9bkjel\overlay\Lib\site-packages\setuptools\build_meta.py", line 325, in get_requires_for_build_wheel
      return self._get_build_requires(config_settings, requirements=['wheel'])
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "C:\Users\rleigh\AppData\Local\Temp\pip-build-env-hc9bkjel\overlay\Lib\site-packages\setuptools\build_meta.py", line 295, in _get_build_requires
      self.run_setup()
    File "C:\Users\rleigh\AppData\Local\Temp\pip-build-env-hc9bkjel\overlay\Lib\site-packages\setuptools\build_meta.py", line 487, in run_setup
      super().run_setup(setup_script=setup_script)
    File "C:\Users\rleigh\AppData\Local\Temp\pip-build-env-hc9bkjel\overlay\Lib\site-packages\setuptools\build_meta.py", line 311, in run_setup
      exec(code, locals())
    File "<string>", line 77, in <module>
  ModuleNotFoundError: No module named 'numpy'
  [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
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.

What version of pip are you running? I wonder if adding -vv to the pip install command would confirm that it is installing numpy in the sandbox environment when installing libtiff. Modern pip installs build dependencies in a temporary environment and it seems like yours is creating and using one, but still can't find numpy.

I'm running pip 24.0.

$ pip install -vv libtiff
Using pip 24.0 from C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip (python 3.12)
Non-user install because user site-packages disabled
Created temporary directory: C:\Users\rleigh\AppData\Local\Temp\pip-build-tracker-k2z00apn
Initialized build tracking at C:\Users\rleigh\AppData\Local\Temp\pip-build-tracker-k2z00apn
Created build tracker: C:\Users\rleigh\AppData\Local\Temp\pip-build-tracker-k2z00apn
Entered build tracker: C:\Users\rleigh\AppData\Local\Temp\pip-build-tracker-k2z00apn
Created temporary directory: C:\Users\rleigh\AppData\Local\Temp\pip-install-ds39g663
Created temporary directory: C:\Users\rleigh\AppData\Local\Temp\pip-ephem-wheel-cache-i4b4aboa
1 location(s) to search for versions of libtiff:
* https://pypi.org/simple/libtiff/
Fetching project page and analyzing links: https://pypi.org/simple/libtiff/
Getting page https://pypi.org/simple/libtiff/
Found index url https://pypi.org/simple/
Looking up "https://pypi.org/simple/libtiff/" in the cache
Request header has "max_age" as 0, cache bypassed
Starting new HTTPS connection (1): pypi.org:443
https://pypi.org:443 "GET /simple/libtiff/ HTTP/1.1" 304 0
Fetched page https://pypi.org/simple/libtiff/ as application/vnd.pypi.simple.v1+json
  Found link https://files.pythonhosted.org/packages/6f/d5/ddb1a0d48c96492a0cded32379fd7851ee3cbdd034eca82b287db165da33/libtiff-0.4.0.tar.gz (from https://pypi.org/simple/libtiff/), version: 0.4.0
  Found link https://files.pythonhosted.org/packages/a2/3f/4ba348d9e38ce928180b5696d388f448d485e6a3daae05271a3ccf4af975/libtiff-0.4.1.tar.gz (from https://pypi.org/simple/libtiff/), version: 0.4.1
  Found link https://files.pythonhosted.org/packages/18/8f/b844284d43d385c08967b25eb76f625a5f06490cc4680e17644587053756/libtiff-0.4.2.tar.gz (from https://pypi.org/simple/libtiff/), version: 0.4.2
Skipping link: not a file: https://pypi.org/simple/libtiff/
Given no hashes to check 3 links for project 'libtiff': discarding no candidates
Collecting libtiff
  Created temporary directory: C:\Users\rleigh\AppData\Local\Temp\pip-unpack-1heqcv1i
  Looking up "https://files.pythonhosted.org/packages/18/8f/b844284d43d385c08967b25eb76f625a5f06490cc4680e17644587053756/libtiff-0.4.2.tar.gz" in the cache
  Current age based on date: 19936
  Ignoring unknown cache-control directive: immutable
  Freshness lifetime from max-age: 365000000
  The response is "fresh", returning cached response
  365000000 > 19936
  Using cached libtiff-0.4.2.tar.gz (129 kB)
  Added libtiff from https://files.pythonhosted.org/packages/18/8f/b844284d43d385c08967b25eb76f625a5f06490cc4680e17644587053756/libtiff-0.4.2.tar.gz to build tracker 'C:\\Users\\rleigh\\AppData\\Local\\Temp\\pip-build-tracker-k2z00apn'
  Created temporary directory: C:\Users\rleigh\AppData\Local\Temp\pip-build-env-0p_1p2tl
  Installing build dependencies: started
  Running command pip subprocess to install build dependencies
  Using pip 24.0 from C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip (python 3.12)
  Collecting setuptools>=40.8.0
    Obtaining dependency information for setuptools>=40.8.0 from https://files.pythonhosted.org/packages/92/e1/1c8bb3420105e70bdf357d57dd5567202b4ef8d27f810e98bb962d950834/setuptools-69.2.0-py3-none-any.whl.metadata
    Using cached setuptools-69.2.0-py3-none-any.whl.metadata (6.3 kB)
  Using cached setuptools-69.2.0-py3-none-any.whl (821 kB)
  Installing collected packages: setuptools
  Successfully installed setuptools-69.2.0
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Running command Getting requirements to build wheel
  Traceback (most recent call last):
    File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353, in <module>
      main()
    File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\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\rleigh\AppData\Local\Temp\test-libtiff\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\rleigh\AppData\Local\Temp\pip-build-env-0p_1p2tl\overlay\Lib\site-packages\setuptools\build_meta.py", line 325, in get_requires_for_build_wheel
      return self._get_build_requires(config_settings, requirements=['wheel'])
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "C:\Users\rleigh\AppData\Local\Temp\pip-build-env-0p_1p2tl\overlay\Lib\site-packages\setuptools\build_meta.py", line 295, in _get_build_requires
      self.run_setup()
    File "C:\Users\rleigh\AppData\Local\Temp\pip-build-env-0p_1p2tl\overlay\Lib\site-packages\setuptools\build_meta.py", line 487, in run_setup
      super().run_setup(setup_script=setup_script)
    File "C:\Users\rleigh\AppData\Local\Temp\pip-build-env-0p_1p2tl\overlay\Lib\site-packages\setuptools\build_meta.py", line 311, in run_setup
      exec(code, locals())
    File "<string>", line 77, in <module>
  ModuleNotFoundError: No module named 'numpy'
  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\rleigh\AppData\Local\Temp\test-libtiff\Scripts\python.exe' 'C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py' get_requires_for_build_wheel 'C:\Users\rleigh\AppData\Local\Temp\tmpqdc43pli'
  cwd: C:\Users\rleigh\AppData\Local\Temp\pip-install-ds39g663\libtiff_51bba241dd9b4854ad6f7cc7b6edb213
  Getting requirements to build wheel: finished with status '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.
Exception information:
Traceback (most recent call last):
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\cli\base_command.py", line 180, in exc_logging_wrapper
    status = run_func(*args)
             ^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\cli\req_command.py", line 245, in wrapper
    return func(self, options, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\commands\install.py", line 377, in run
    requirement_set = resolver.resolve(
                      ^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\resolution\resolvelib\resolver.py", line 95, in resolve
    result = self._result = resolver.resolve(
                            ^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 546, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 397, in resolve
    self._add_to_criteria(self.state.criteria, r, parent=None)
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 173, in _add_to_criteria
    if not criterion.candidates:
           ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_vendor\resolvelib\structs.py", line 156, in __bool__
    return bool(self._sequence)
           ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 155, in __bool__
    return any(self)
           ^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 143, in <genexpr>
    return (c for c in iterator if id(c) not in self._incompatible_ids)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 47, in _iter_built
    candidate = func()
                ^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\resolution\resolvelib\factory.py", line 182, in _make_candidate_from_link
    base: Optional[BaseCandidate] = self._make_base_candidate_from_link(
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\resolution\resolvelib\factory.py", line 228, in _make_base_candidate_from_link
    self._link_candidate_cache[link] = LinkCandidate(
                                       ^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 290, in __init__
    super().__init__(
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 156, in __init__
    self.dist = self._prepare()
                ^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 222, in _prepare
    dist = self._prepare_distribution()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 301, in _prepare_distribution
    return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\operations\prepare.py", line 525, in prepare_linked_requirement
    return self._prepare_linked_requirement(req, parallel_builds)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\operations\prepare.py", line 640, in _prepare_linked_requirement
    dist = _get_prepared_distribution(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\operations\prepare.py", line 71, in _get_prepared_distribution
    abstract_dist.prepare_distribution_metadata(
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\distributions\sdist.py", line 54, in prepare_distribution_metadata
    self._install_build_reqs(finder)
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\distributions\sdist.py", line 124, in _install_build_reqs
    build_reqs = self._get_build_requires_wheel()
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\distributions\sdist.py", line 101, in _get_build_requires_wheel
    return backend.get_requires_for_build_wheel()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\utils\misc.py", line 745, in get_requires_for_build_wheel
    return super().get_requires_for_build_wheel(config_settings=cs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_vendor\pyproject_hooks\_impl.py", line 166, in get_requires_for_build_wheel
    return self._call_hook('get_requires_for_build_wheel', {
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_vendor\pyproject_hooks\_impl.py", line 311, in _call_hook
    self._subprocess_runner(
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\utils\subprocess.py", line 252, in runner
    call_subprocess(
  File "C:\Users\rleigh\AppData\Local\Temp\test-libtiff\Lib\site-packages\pip\_internal\utils\subprocess.py", line 224, in call_subprocess
    raise error
pip._internal.exceptions.InstallationSubprocessError: Getting requirements to build wheel exited with 1
Remote version of pip: 24.0
Local version of pip:  24.0
Was pip installed by pip? True
Removed libtiff from https://files.pythonhosted.org/packages/18/8f/b844284d43d385c08967b25eb76f625a5f06490cc4680e17644587053756/libtiff-0.4.2.tar.gz from build tracker 'C:\\Users\\rleigh\\AppData\\Local\\Temp\\pip-build-tracker-k2z00apn'
Removed build tracker: 'C:\\Users\\rleigh\\AppData\\Local\\Temp\\pip-build-tracker-k2z00apn'

Same on FreeBSD with Python 3.9 and pip 24.0:

amys% python3 --version
Python 3.9.16
amys% python -m venv /tmp/libtiff-test
amys% . /tmp/libtiff-test/bin/activate
(libtiff-test) amys% pip install --upgrade pip
Requirement already satisfied: pip in /var/tmp/libtiff-test/lib/python3.9/site-packages (22.0.4)
Collecting pip
  Downloading pip-24.0-py3-none-any.whl (2.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 6.6 MB/s eta 0:00:00
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 22.0.4
    Uninstalling pip-22.0.4:
      Successfully uninstalled pip-22.0.4
Successfully installed pip-24.0
(libtiff-test) amys% pip install -vv libtiff
Using pip 24.0 from /tmp/libtiff-test/lib/python3.9/site-packages/pip (python 3.9)
Non-user install because user site-packages disabled
Created temporary directory: /var/tmp/pip-build-tracker-_gk15t33
Initialized build tracking at /var/tmp/pip-build-tracker-_gk15t33
Created build tracker: /var/tmp/pip-build-tracker-_gk15t33
Entered build tracker: /var/tmp/pip-build-tracker-_gk15t33
Created temporary directory: /var/tmp/pip-install-1qjmoobv
Created temporary directory: /var/tmp/pip-ephem-wheel-cache-9zxusxqt
1 location(s) to search for versions of libtiff:
* https://pypi.org/simple/libtiff/
Fetching project page and analyzing links: https://pypi.org/simple/libtiff/
Getting page https://pypi.org/simple/libtiff/
Found index url https://pypi.org/simple/
Looking up "https://pypi.org/simple/libtiff/" in the cache
Request header has "max_age" as 0, cache bypassed
No cache entry available
Starting new HTTPS connection (1): pypi.org:443
https://pypi.org:443 "GET /simple/libtiff/ HTTP/1.1" 200 596
Updating cache with response from "https://pypi.org/simple/libtiff/"
etag object cached for 1209600 seconds
Caching due to etag
Fetched page https://pypi.org/simple/libtiff/ as application/vnd.pypi.simple.v1+json
  Found link https://files.pythonhosted.org/packages/6f/d5/ddb1a0d48c96492a0cded32379fd7851ee3cbdd034eca82b287db165da33/libtiff-0.4.0.tar.gz (from https://pypi.org/simple/libtiff/), version: 0.4.0
  Found link https://files.pythonhosted.org/packages/a2/3f/4ba348d9e38ce928180b5696d388f448d485e6a3daae05271a3ccf4af975/libtiff-0.4.1.tar.gz (from https://pypi.org/simple/libtiff/), version: 0.4.1
  Found link https://files.pythonhosted.org/packages/18/8f/b844284d43d385c08967b25eb76f625a5f06490cc4680e17644587053756/libtiff-0.4.2.tar.gz (from https://pypi.org/simple/libtiff/), version: 0.4.2
Skipping link: not a file: https://pypi.org/simple/libtiff/
Given no hashes to check 3 links for project 'libtiff': discarding no candidates
Collecting libtiff
  Created temporary directory: /var/tmp/pip-unpack-v6dv0iw6
  Looking up "https://files.pythonhosted.org/packages/18/8f/b844284d43d385c08967b25eb76f625a5f06490cc4680e17644587053756/libtiff-0.4.2.tar.gz" in the cache
  No cache entry available
  No cache entry available
  Starting new HTTPS connection (1): files.pythonhosted.org:443
  https://files.pythonhosted.org:443 "GET /packages/18/8f/b844284d43d385c08967b25eb76f625a5f06490cc4680e17644587053756/libtiff-0.4.2.tar.gz HTTP/1.1" 200 129960
  Downloading libtiff-0.4.2.tar.gz (129 kB)
     ━━━━━━━━━━━━━━━━━━━━━━╺━━━━━━━━━━━━━━━━━ 71.7/130.0 kB 2.0 MB/s eta 0:00:01  Ignoring unknown cache-control directive: immutable
  Updating cache with response from "https://files.pythonhosted.org/packages/18/8f/b844284d43d385c08967b25eb76f625a5f06490cc4680e17644587053756/libtiff-0.4.2.tar.gz"
  etag object cached for 1209600 seconds
  Caching due to etag
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 130.0/130.0 kB 2.2 MB/s eta 0:00:00
  Added libtiff from https://files.pythonhosted.org/packages/18/8f/b844284d43d385c08967b25eb76f625a5f06490cc4680e17644587053756/libtiff-0.4.2.tar.gz to build tracker '/var/tmp/pip-build-tracker-_gk15t33'
  Created temporary directory: /var/tmp/pip-build-env-ijsshcrv
  Running command pip subprocess to install build dependencies
  Using pip 24.0 from /var/tmp/libtiff-test/lib/python3.9/site-packages/pip (python 3.9)
  Collecting setuptools>=40.8.0
    Obtaining dependency information for setuptools>=40.8.0 from https://files.pythonhosted.org/packages/92/e1/1c8bb3420105e70bdf357d57dd5567202b4ef8d27f810e98bb962d950834/setuptools-69.2.0-py3-none-any.whl.metadata
    Downloading setuptools-69.2.0-py3-none-any.whl.metadata (6.3 kB)
  Downloading setuptools-69.2.0-py3-none-any.whl (821 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 821.5/821.5 kB 5.2 MB/s eta 0:00:00
  Installing collected packages: setuptools
  Successfully installed setuptools-69.2.0
  Installing build dependencies ... done
  Running command Getting requirements to build wheel
  Traceback (most recent call last):
    File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
      main()
    File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
      return hook(config_settings)
    File "/var/tmp/pip-build-env-ijsshcrv/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 325, in get_requires_for_build_wheel
      return self._get_build_requires(config_settings, requirements=['wheel'])
    File "/var/tmp/pip-build-env-ijsshcrv/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 295, in _get_build_requires
      self.run_setup()
    File "/var/tmp/pip-build-env-ijsshcrv/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 487, in run_setup
      super().run_setup(setup_script=setup_script)
    File "/var/tmp/pip-build-env-ijsshcrv/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 311, in run_setup
      exec(code, locals())
    File "<string>", line 77, in <module>
  ModuleNotFoundError: No module named 'numpy'
  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: /tmp/libtiff-test/bin/python /tmp/libtiff-test/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py get_requires_for_build_wheel /tmp/tmpgnql14q0
  cwd: /var/tmp/pip-install-1qjmoobv/libtiff_c9df6a88697047feb1cde24dd2d50b93
  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.
Exception information:
Traceback (most recent call last):
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/cli/base_command.py", line 180, in exc_logging_wrapper
    status = run_func(*args)
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/cli/req_command.py", line 245, in wrapper
    return func(self, options, args)
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/commands/install.py", line 377, in run
    requirement_set = resolver.resolve(
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 95, in resolve
    result = self._result = resolver.resolve(
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 546, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 397, in resolve
    self._add_to_criteria(self.state.criteria, r, parent=None)
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 173, in _add_to_criteria
    if not criterion.candidates:
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_vendor/resolvelib/structs.py", line 156, in __bool__
    return bool(self._sequence)
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 155, in __bool__
    return any(self)
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 143, in <genexpr>
    return (c for c in iterator if id(c) not in self._incompatible_ids)
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 47, in _iter_built
    candidate = func()
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 182, in _make_candidate_from_link
    base: Optional[BaseCandidate] = self._make_base_candidate_from_link(
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 228, in _make_base_candidate_from_link
    self._link_candidate_cache[link] = LinkCandidate(
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 290, in __init__
    super().__init__(
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __init__
    self.dist = self._prepare()
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 222, in _prepare
    dist = self._prepare_distribution()
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 301, in _prepare_distribution
    return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 525, in prepare_linked_requirement
    return self._prepare_linked_requirement(req, parallel_builds)
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 640, in _prepare_linked_requirement
    dist = _get_prepared_distribution(
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 71, in _get_prepared_distribution
    abstract_dist.prepare_distribution_metadata(
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/distributions/sdist.py", line 54, in prepare_distribution_metadata
    self._install_build_reqs(finder)
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/distributions/sdist.py", line 124, in _install_build_reqs
    build_reqs = self._get_build_requires_wheel()
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/distributions/sdist.py", line 101, in _get_build_requires_wheel
    return backend.get_requires_for_build_wheel()
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/utils/misc.py", line 745, in get_requires_for_build_wheel
    return super().get_requires_for_build_wheel(config_settings=cs)
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_impl.py", line 166, in get_requires_for_build_wheel
    return self._call_hook('get_requires_for_build_wheel', {
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_impl.py", line 311, in _call_hook
    self._subprocess_runner(
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/utils/subprocess.py", line 252, in runner
    call_subprocess(
  File "/tmp/libtiff-test/lib/python3.9/site-packages/pip/_internal/utils/subprocess.py", line 224, in call_subprocess
    raise error
pip._internal.exceptions.InstallationSubprocessError: Getting requirements to build wheel exited with 1
Remote version of pip: 24.0
Local version of pip:  24.0
Was pip installed by pip? True
Removed libtiff from https://files.pythonhosted.org/packages/18/8f/b844284d43d385c08967b25eb76f625a5f06490cc4680e17644587053756/libtiff-0.4.2.tar.gz from build tracker '/var/tmp/pip-build-tracker-_gk15t33'
Removed build tracker: '/var/tmp/pip-build-tracker-_gk15t33'

Ah, this package is not "libtiff" on PyPI. It is "pylibtiff". Version 0.4.2 of libtiff on PyPI is from 2017. Pylibtiff has 0.6.1 from last September.

Ah, apologies for the confusion. I can confirm pip install pylibtiff works correctly on both platforms.