-
Notifications
You must be signed in to change notification settings - Fork 67
Description
edit: sorry for the premature post!
Installation fails using the recommended directions on Python 3.12. I think this has to do with some of the changes to setuptools and its interactions with pip when installing packages that explicitly import setuptools, as ISLP does. This has been a looming concern across quite a few packages (explainer here)
$ conda create -y -n islp python==3.12
$ conda activate islp
$ pip install ISLP --no-cache-dir yields:
Collecting islp
Downloading ISLP-0.3.22-py3-none-any.whl.metadata (7.0 kB)
Collecting numpy<1.25,>=1.7.1 (from islp)
Downloading numpy-1.24.4.tar.gz (10.9 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.9/10.9 MB 113.7 MB/s eta 0:00:00
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
╰─> [33 lines of output]
Traceback (most recent call last):
File "/Users/lw17329/miniforge3/envs/islp/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
main()
File "/Users/lw17329/miniforge3/envs/islp/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 "/Users/lw17329/miniforge3/envs/islp/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 112, in get_requires_for_build_wheel
backend = _build_backend()
^^^^^^^^^^^^^^^^
File "/Users/lw17329/miniforge3/envs/islp/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 77, in _build_backend
obj = import_module(mod_path)
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/lw17329/miniforge3/envs/islp/lib/python3.12/importlib/__init__.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1381, in _gcd_import
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1304, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1381, in _gcd_import
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 994, in exec_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "/private/var/folders/g3/kfqgyscs7k59d1l6867ztwmh0000gn/T/pip-build-env-i1kqfax3/overlay/lib/python3.12/site-packages/setuptools/__init__.py", line 16, in <module>
import setuptools.version
File "/private/var/folders/g3/kfqgyscs7k59d1l6867ztwmh0000gn/T/pip-build-env-i1kqfax3/overlay/lib/python3.12/site-packages/setuptools/version.py", line 1, in <module>
import pkg_resources
File "/private/var/folders/g3/kfqgyscs7k59d1l6867ztwmh0000gn/T/pip-build-env-i1kqfax3/overlay/lib/python3.12/site-packages/pkg_resources/__init__.py", line 2172, in <module>
register_finder(pkgutil.ImpImporter, find_on_path)
^^^^^^^^^^^^^^^^^^^
AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?
[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.
This error does not manifest in Python 3.11. The following completes successfully:
$ conda create -y -n islp python==3.11
$ conda activate islp
$ pip install ISLP --no-cache-dirAnswering the comment from #16, conda install -c conda-forge pytorch completes successfully in either 3.12 or 3.11
Suggested fix
I think moving fully off of setup.py to pyproject.toml would resolve the issue. I think, too, it's possible that removing the hard import setuptools import would allow for a minimal fix, but I have not yet explored this myself.