pythonnumpypippackage

Error installing trottersuzuki package in venv. numpy not found error even though it is there


It says numpy not installed even though it is installed. I thought may be the venv is not accessible to pip (which it should be, because numpy is installed inside the venv) and I installed it system wide using sudo apt install python3-numpy as you can see in the very last of the following snippet.

vanangamudi@kaithadi:~/code/bec-gp/BEC_GP
$ workon gpinn
(gpinn) vanangamudi@kaithadi:~/code/bec-gp/BEC_GP
$ pip install trottersuzuki
Collecting trottersuzuki
  Using cached trottersuzuki-1.6.2.tar.gz (218 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... 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 "/home/vanangamudi/.virtualenvs/gpinn/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/home/vanangamudi/.virtualenvs/gpinn/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/vanangamudi/.virtualenvs/gpinn/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
          return hook(config_settings)
                 ^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-d6cdwe1m/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 332, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=[])
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-d6cdwe1m/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 302, in _get_build_requires
          self.run_setup()
        File "/tmp/pip-build-env-d6cdwe1m/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 503, in run_setup
          super().run_setup(setup_script=setup_script)
        File "/tmp/pip-build-env-d6cdwe1m/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 318, in run_setup
          exec(code, locals())
        File "<string>", line 6, 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.
(gpinn) vanangamudi@kaithadi:~/code/bec-gp/BEC_GP
$ python -c 'import numpy'
(gpinn) vanangamudi@kaithadi:~/code/bec-gp/BEC_GP
$ python -c 'import matplotlib'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'matplotlib'
(gpinn) vanangamudi@kaithadi:~/code/bec-gp/BEC_GP
$ 

Solution

  • trottersuzuki doesn't provide binary wheels, only sdist. When installing from a source distribution modern pip first build a wheel in a new isolated virtual environment. In this isolated venv there is no numpy. For pip to install numpy during build phase there must be a file pyproject.toml in the package that lists numpy as a build dependency. But there is no such file. I advice to report it… oh, I see you've already reported the bug; you should told this in the question.

    Until the bug is fixed there is workaround: disable build isolation:

    $ pip install numpy setuptools
    $ pip install --no-build-isolation trottersuzuki