ERROR: Could not build wheels for scipy which use PEP 517 and cannot be installed directly

PythonScipyPipEmbedded LinuxPython Wheel

Python Problem Overview


I'm trying to install scipy via pip on my 64 bit ARMV8 board. I have already installed openblas which is required by scipy. So, no issues with that. When i gave pip3 install scipy --trusted-host pypi.org --trusted-host files.pythonhosted.org , I got the error Failed building wheel for scipy . I have pip3 and pip3.5 in my /usr/bin and the rest of the pip is in /usr/lib64/python3.5/site-packages.So basically, I also have pip.

I also tried to install scipy with --no-binary option, which was one of the answers on net. But, it gave me the same error. Below's the error that i got.

ERROR:

Collecting scipy
  Downloading scipy-1.4.1.tar.gz (24.6 MB)
     |################################| 24.6 MB 6.6 MB/s 
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Building wheels for collected packages: scipy
  Building wheel for scipy (PEP 517) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/bin/python3 /usr/lib64/python3.5/site-packages/pip-20.0.2-py3.5.egg/pip/_vendor/pep517/_in_process.py build_wheel /tmp/tmpkklsvv4v
       cwd: /tmp/pip-install-9v4nmof7/scipy
  Complete output (50 lines):
  /usr/bin/python3: No module named pip
  Traceback (most recent call last):
    File "/usr/lib64/python3.5/site-packages/setuptools/installer.py", line 128, in fetch_build_egg
      subprocess.check_call(cmd)
    File "/usr/lib64/python3.5/subprocess.py", line 271, in check_call
      raise CalledProcessError(retcode, cmd)
  subprocess.CalledProcessError: Command '['/usr/bin/python3', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmpp7fvgp36', '--quiet', 'numpy>=1.13.3']' returned non-zero exit status 1
  
  During handling of the above exception, another exception occurred:
  
  Traceback (most recent call last):
    File "/usr/lib64/python3.5/site-packages/pip-20.0.2-py3.5.egg/pip/_vendor/pep517/_in_process.py", line 257, in <module>
      main()
    File "/usr/lib64/python3.5/site-packages/pip-20.0.2-py3.5.egg/pip/_vendor/pep517/_in_process.py", line 240, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "/usr/lib64/python3.5/site-packages/pip-20.0.2-py3.5.egg/pip/_vendor/pep517/_in_process.py", line 182, in build_wheel
      metadata_directory)
    File "/usr/lib64/python3.5/site-packages/setuptools/build_meta.py", line 213, in build_wheel
      wheel_directory, config_settings)
    File "/usr/lib64/python3.5/site-packages/setuptools/build_meta.py", line 198, in _build_with_temp_dir
      self.run_setup()
    File "/usr/lib64/python3.5/site-packages/setuptools/build_meta.py", line 250, in run_setup
      self).run_setup(setup_script=setup_script)
    File "/usr/lib64/python3.5/site-packages/setuptools/build_meta.py", line 143, in run_setup
      exec(compile(code, __file__, 'exec'), locals())
    File "setup.py", line 540, in <module>
      setup_package()
    File "setup.py", line 536, in setup_package
      setup(**metadata)
    File "/usr/lib64/python3.5/site-packages/numpy/distutils/core.py", line 126, in setup
      dist = setup(**new_attr)
    File "/usr/lib64/python3.5/site-packages/numpy/distutils/core.py", line 169, in setup
      return old_setup(**new_attr)
    File "/usr/lib64/python3.5/site-packages/setuptools/__init__.py", line 143, in setup
      _install_setup_requires(attrs)
    File "/usr/lib64/python3.5/site-packages/setuptools/__init__.py", line 138, in _install_setup_requires
      dist.fetch_build_eggs(dist.setup_requires)
    File "/usr/lib64/python3.5/site-packages/setuptools/dist.py", line 698, in fetch_build_eggs
      replace_conflicting=True,
    File "/usr/lib64/python3.5/site-packages/pkg_resources/__init__.py", line 783, in resolve
      replace_conflicting=replace_conflicting
    File "/usr/lib64/python3.5/site-packages/pkg_resources/__init__.py", line 1066, in best_match
      return self.obtain(req, installer)
    File "/usr/lib64/python3.5/site-packages/pkg_resources/__init__.py", line 1078, in obtain
      return installer(requirement)
    File "/usr/lib64/python3.5/site-packages/setuptools/dist.py", line 754, in fetch_build_egg
      return fetch_build_egg(self, req)
    File "/usr/lib64/python3.5/site-packages/setuptools/installer.py", line 130, in fetch_build_egg
      raise DistutilsError(str(e))
  distutils.errors.DistutilsError: Command '['/usr/bin/python3', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmpp7fvgp36', '--quiet', 'numpy>=1.13.3']' returned non-zero exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for scipy
Failed to build scipy
ERROR: Could not build wheels for scipy which use PEP 517 and cannot be installed directly

Python Solutions


Solution 1 - Python

I had the same issue with opencv-python. What worked for me was updating pip as:

pip3 install --upgrade pip

Note: I am using docker on Linux.

Solution 2 - Python

I had the same issue. I resolved this issue after run below command

pip install --upgrade pip setuptools wheel

Solution 3 - Python

My problem was not with scipy, but with xmlsec. The error message was almost the same:

ERROR: Could not build wheels for xmlsec which use PEP 517 and cannot be installed directly

I needed this library, because it was dependency for python3-saml. From the documentation I read that they first install these packages:

sudo apt-get install libxml2-dev libxmlsec1-dev

After doing this the installation of python3-saml worked for me.

pip3 -V
pip 20.2.3

python -V
Python 3.8.0b3

Probably the answer for other libraries is different, but they all need some package in order to be build, and you should find what is this package for you.

Solution 4 - Python

This error also comes for numpy and if you are using the new M1 chip, I am afraid you have to install packages like numpy differently. Check this out.

Solution 5 - Python

directly do

pip install p5py
pip install PEP517

this will do the work.

Solution 6 - Python

I faced the same problem. Seems that pip uses the pkg-config - if this is missing from your host OS it will run into this error. I resolved by:

sudo apt-get install -y pkg-config

Then re-run pip

Solution 7 - Python

I had this issue trying to install the tidyms package (which depends on scipy <= 1.4.1).

In my case, using python 3.8 instead of python 3.9 "solved" the issue (at least was able to install).

Solution 8 - Python

Had similar issues. I had to install some OS and after that, I was able to install missing scikit packages (scikit-sparse in my case)

sudo apt-get install libsuitesparse-dev

Solution 9 - Python

In my case I was installing from a requirements.txt file with the command:

pip install -r requirements.txt

And was getting this error. I solved it installing the package individually (pip install scipy) and replacing the version of Scipy I had in requirements.txt with the one that worked.

Solution 10 - Python

If using Windows OS, verify under Start > Settings > Update & Security > Windows Security > Virus & threat protection > Protection History if Windows is identifying the file for installing PyInstaller with Pip as potential malware and thus blocking it. Worked for me.

Solution 11 - Python

ERROR: Failed building wheel for h5py
Failed to build h5py
ERROR: Could not build wheels for h5py which use PEP 517 and cannot be installed directly

I had a similar issue while installing Keras, resolved above issue using below steps:

  1. conda install h5py

  2. pip install keras

Solution 12 - Python

Try to install an order version. I had the same problem using python 3.10. I just downgrade it to python 3.9.7 and worked fine

Solution 13 - Python

Personally I get rid of this error by changing the #!/usr/bin/env python3.9 to #!/usr/bin/env python3 in the file located in ~/.poetry/bin/poetry and running pip3 install --upgrade pip setuptools wheel apparently python3.9 got some difficulties with poetry.

Solution 14 - Python

for the latest M1 type of mac , before creating a virtualenv do switch zsh to x86 type

Step 1:

arch -x86_64 zsh
uname -m 

The output will be x86_64 which was arm64 earlier.

Step 2:

brew install openblas
export OPENBLAS=$(brew --prefix openblas)
export CFLAGS="-falign-functions=8 ${CFLAGS}"
pip install Cython pybind11 pythran
pip install --no-use-pep517 scipy

(no need after step 1 : --no-use-pep517 )

after that everything is normal

Solution 15 - Python

I had the same issue with Django Rest Framework on Docker (running on M1 Mac), and what worked for me was adding

RUN pip install --upgrade pip

just before I install all the project dependencies.

Solution 16 - Python

In my case, I just used a specific python version i.e 3.8 for my base image instead of latest

Before: FROM python:3

After: FROM python:3.8

Issue Resolved for me

Solution 17 - Python

I had the same issue and solved it by installing the module using conda. In my case conda install -c conda-forge statsmodels worked without error.

Solution 18 - Python

This error ocurred for me while trying to pip3 install aws-sam-cli awscli on macOS 11.5.2 (M1 Chip).

Adding the follow two lines worked for me

dnf install -y python3-devel
dnf group install -y "Development Tools"

Full Dockerfile

FROM centos:8

RUN dnf upgrade -y && \
    dnf module -y install nodejs:14 && \
    dnf install -y python3 python3-devel git-all && \
    dnf group install -y "Development Tools" && \
    pip3 install --upgrade pip setuptools && \
    pip3 install aws-sam-cli awscli

Solution 19 - Python

Try:

apt-get install build-essential python-dev python-pip

Then:

pip install couchbase

Solution 20 - Python

I ran into the same issue, albeit on an Apple M1 Macbook Pro. The solution in this case was to use Miniforge instead of Anaconda, because the latter doesn't support the arm64 architecture, yet.

Solution 21 - Python

The problem I was facing was that I upgraded to the next python version as soon as it was released.

Advice: wait for atleast 1-2 months before upgrading.

The different modules and libararies on the web aren't updated as soon as python update is released and hence they wont be compatible.

Simply downrade your python version to the version just before current one and you will be good to go.

No matter what you install or what you do you wont be able to install the module unless the devs update it.

Solution 22 - Python

I started getting this error after upgrading macOS to the latest version.

  • I had to re-install Xcode tools by running xcode-select --install first.

  • Close and re-open terminal window

And then, was able to install pandas without any issues.

Solution 23 - Python

My issue was with mpi4py. My pip install generated this error, but installing the package through the Anaconda GUI did the trick.

Solution 24 - Python

Try

pip install --pre --extra-index https://pypi.anaconda.org/scipy-wheels-nightly/simple scikit-learn

for Python version 3.10 or greater.

Solution 25 - Python

i am using windows x64 based processor. still i havent found solution on this. i tried all above but not worked on me.

but yea after trying hundreds of times i found solution. i downgrade the python version from 3.10.0 to 3.8.10 and it is fine now

Solution 26 - Python

I faced similiar problem while installing pycocotools. This answer is for anyone who tried to install pycocotools but faced the similar type of problem while installing.

Try using this instead:

pip install pycocotools-windows


If you are using conda environment, use this as well:

conda install cython

Solution 27 - Python

If you are using Mac, it could be because of the Xcode license agreement.
Try below in a terminal.

sudo xcodebuild -license

Solution 28 - Python

Simply installing the dependent failing package (in your case scipy) separately will fix the issue.

python3 -m pip install scipy

followed by pip installing the package you were trying in the first place.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSourabrtView Question on Stackoverflow
Solution 1 - PythonAhmed KtobView Answer on Stackoverflow
Solution 2 - PythonBharat KumarView Answer on Stackoverflow
Solution 3 - PythonmakkasiView Answer on Stackoverflow
Solution 4 - PythonBendemannView Answer on Stackoverflow
Solution 5 - PythonSuniti JainView Answer on Stackoverflow
Solution 6 - PythonMed ShahView Answer on Stackoverflow
Solution 7 - Pythonbwv549View Answer on Stackoverflow
Solution 8 - PythonGadiView Answer on Stackoverflow
Solution 9 - PythonGenaritoView Answer on Stackoverflow
Solution 10 - PythonrzimmerdevView Answer on Stackoverflow
Solution 11 - PythonSunilView Answer on Stackoverflow
Solution 12 - PythonArthurView Answer on Stackoverflow
Solution 13 - PythonBackSlashHaineView Answer on Stackoverflow
Solution 14 - Pythonaryan singhView Answer on Stackoverflow
Solution 15 - PythonTomisin AbiodunView Answer on Stackoverflow
Solution 16 - PythonSuraj JaiswalView Answer on Stackoverflow
Solution 17 - PythonAlirezaView Answer on Stackoverflow
Solution 18 - PythonLuis Banegas SaybeView Answer on Stackoverflow
Solution 19 - PythonNikhil MVSView Answer on Stackoverflow
Solution 20 - Pythonmartin_wunView Answer on Stackoverflow
Solution 21 - PythonAryan BansalView Answer on Stackoverflow
Solution 22 - PythongipView Answer on Stackoverflow
Solution 23 - PythonClayton C.View Answer on Stackoverflow
Solution 24 - PythonJasma BalasangameshwaraView Answer on Stackoverflow
Solution 25 - PythonMuhammad Awais Khan MS StudentView Answer on Stackoverflow
Solution 26 - PythonPrakash DahalView Answer on Stackoverflow
Solution 27 - PythonplhnView Answer on Stackoverflow
Solution 28 - PythonVineet SinghView Answer on Stackoverflow