pip install fails due to old numpy version
With python 3.12+, the installation via pip install paddleclas fails due to numpy:
Collecting numpy==1.24.4 (from paddleclas)
Using cached numpy-1.24.4.tar.gz (10.9 MB)
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
╰─> [32 lines of output]
Traceback (most recent call last):
File "/home/xxx/miniconda3/envs/3.13/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
main()
~~~~^^
File "/home/xxx/miniconda3/envs/3.13/lib/python3.13/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/xxx/miniconda3/envs/3.13/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 112, in get_requires_for_build_wheel
backend = _build_backend()
File "/home/xxx/miniconda3/envs/3.13/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 77, in _build_backend
obj = import_module(mod_path)
File "/home/xxx/miniconda3/envs/3.13/lib/python3.13/importlib/__init__.py", line 88, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 1026, in exec_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "/tmp/pip-build-env-oxkroq4l/overlay/lib/python3.13/site-packages/setuptools/__init__.py", line 16, in <module>
import setuptools.version
File "/tmp/pip-build-env-oxkroq4l/overlay/lib/python3.13/site-packages/setuptools/version.py", line 1, in <module>
import pkg_resources
File "/tmp/pip-build-env-oxkroq4l/overlay/lib/python3.13/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]
For python 3.13+, this PR pinned another version as a workaround: https://github.com/PaddlePaddle/PaddleClas/pull/3327
However, it's still broken for python 3.12.
Hi, paddleclas has not been tested with Python 3.12+, and we are still discussing if the support should be added in the next release. Currently, we would recommend Python 3.8, 3.9, and 3.10, as the existing tests are based on these versions. For now, you can try installing paddleclas from source by locally removing the version specification of numpy from the dependency list. That may work, but since paddleclas isn't really tested with some new versions of numpy, the performance and stability is not guaranteed.
today is 2025-2-4, and this issue is still not fixed. i searched and found that, is setuptools and python version question, or Compatibility issues between Python and numpy versions, or must rewirte paddleclas/setup.py file.
Find 'register_finder(pkgutil.ImpImporter' in 'C:\Python312\Lib\site-packages\pip_vendor\pkg_resources_init_.py' Find 'register_finder(pkgutil.ImpImporter' in 'C:\Python312\Lib\site-packages\pkg_resources_init_.py'
after comment
#if hasattr(pkgutil, 'ImpImporter'):
# register_finder(pkgutil.ImpImporter, find_on_path)
python3.12, use pip install PaddleClas, still get error:
File "C:\Users\apyuser\AppData\Local\Temp\pip-build-env-s4dbcivb\overlay\Lib\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'?
so, in pip install enviroment , the file is not use local site-packages\pkg_resources_init_.py, but use remote pypi file.
python 3.12, Temporarily resolved installation issues
- Download the source code and remove the following "2.6.0" from folder name
- cmd enters the directory
- modify requirements.txt, change numpy==1.24.4 to numpy==1.26.4
- Execute "pip install ."
- run python, test import paddleclas
python 3.12, Temporarily resolved installation issues
- Download the source code and remove the following "2.6.0" from folder name
- cmd enters the directory
- modify requirements.txt, change numpy==1.24.4 to numpy==1.26.4
- Execute "pip install ."
- run python, test import paddleclas
I tried this out, but it failed at first because I only commented out the "numpy==1.24.4; ..." line, since it already had "numpy==1.26.4; ..." line. Your (encorehc) answer is still correct though. I'm on Windows 11, in conda environment, python version 3.12.9.
git clone https://github.com/PaddlePaddle/PaddleClas.git
cd .\PaddleClas\
# edited requirements.txt, commented out "numpy==1.24.4" line, already had "numpy==1.26.4" line
pip install .
It installed requirements successfully. I created a test_import_paddleclas.py file with only "import paddleclas" as the contents. python .\test_import_paddleclas.py RuntimeError: module compiled against ABI version 0x1000009 but this version of numpy is 0x2000000
I went back and edited the requirements.txt file because I'm using python version 3.12.9, not 3.13
# numpy==1.24.4; python_version<"3.13"
# numpy==1.26.4; python_version>="3.13"
numpy==1.26.4
It installed just fine and running my test script worked ok (with a warning about ccache): python .\test_import_paddleclas.py C:\Users\searo\miniconda3\envs\paddle_env_312\Lib\site-packages\paddle\utils\cpp_extension\extension_utils.py:711: UserWarning: No ccache found. Please be aware that recompiling all source files may be required. You can download and install ccache from: https://github.com/ccache/ccache/blob/master/doc/INSTALL.md warnings.warn(warning_message)
Thanks for sharing the solutions. This issue should have been fixed in the develop branch. Please pull the latest code to see if it works.
The issue has no response for a long time and will be closed. You can reopen or new another issue if are still confused.
From Bot