错误:无法使用 PEP 517 构建 Scipy 的 wheels,因此无法直接安装。

197
我试图在我的64位ARMV8开发板上通过pip安装scipy。我已经安装了scipy所需的openblas,所以没有问题。当我输入 pip3 install scipy --trusted-host pypi.org --trusted-host files.pythonhosted.org时,出现错误Failed building wheel for scipy。我在/usr/bin中有pip3和pip3.5,而其余的pip在/usr/lib64/python3.5/site-packages中。因此,基本上我也有pip。
我还尝试使用--no-binary选项安装scipy,这是网上的一个答案之一。但是,它给了我相同的错误。以下是我得到的错误信息: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

/usr/bin/python3 --version/usr/bin/python3 -m pip --version - phd
@phd:/usr/bin/python3 --version 显示的是 Python 3.5.3,而 /usr/bin/python3 -m pip --version 则显示 没有找到pip模块 - Sourabrt
1
你需要安装pip - phd
@phd:我已经安装了pip。/usr/bin/pip3 --version的输出为**pip 20.0.2 from /usr/lib64/python3.5/site-packages/pip-20.0.2-py3.5.egg/pip (python 3.5)**。 - Sourabrt
哦,/usr/lib64/python3.5/site-packagessys.path中,但不在/usr/lib64/python3.5/site-packages/pip-20.0.2-py3.5.egg/中。奇怪的配置。您确定/usr/bin/python3/usr/bin/python3.5是同一版本的Python吗?/usr/bin/python3.5 -m pip --versionhead -1 /usr/bin/pip3head -1 /usr/bin/pip3.5 - phd
显示剩余3条评论
30个回答

3
如果您使用的是Mac电脑,可能是由于Xcode许可协议引起的。请在终端中尝试以下操作:sudo xcodebuild -license

2
如果使用Windows操作系统,请在“开始”>“设置”>“更新和安全”>“Windows安全”>“病毒和威胁防护”>“保护历史记录”下验证是否有关于使用Pip安装PyInstaller的文件被Windows识别为潜在恶意软件并因此被阻止的提示。这对我很有效。

2
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

我在安装Keras时遇到了类似的问题,使用以下步骤解决了上述问题:

  1. conda install h5py

  2. pip install keras


2

尝试安装旧版本。我使用Python 3.10时遇到了同样的问题。我将其降级为Python 3.9.7,然后正常工作。


1
在我的 macOS 11.5.2 (M1芯片) 上尝试安装 pip3 install aws-sam-cli awscli 时出现了这个错误。
加入以下两行代码对我有用。
dnf install -y python3-devel
dnf group install -y "Development Tools"

完整的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

感谢您的解决方案,这可以在Rocky8默认的Python版本上运行。 - W. Dan

1

针对最新的M1款Mac,在创建虚拟环境之前,请将zsh切换为x86类型。

步骤1:

arch -x86_64 zsh
uname -m 

输出结果将是x86_64,之前是arm64步骤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-use-pep517选项,然后一切正常。

1
个人而言,我通过将位于~/.poetry/bin/poetry的文件中的#!/usr/bin/env python3.9更改为#!/usr/bin/env python3并运行pip3 install --upgrade pip setuptools wheel来消除此错误,显然python3.9与poetry存在一些困难。

1

只需单独安装依赖失败的软件包(在您的情况下是scipy),问题就会得到解决。

python3 -m pip install scipy

然后跟着pip安装你一开始尝试的包。


这实际上是原帖作者最先尝试的。 - soundstripe

1

我在M1 Mac上使用Docker运行Django Rest Framework时遇到了同样的问题,解决方法是在安装所有项目依赖项之前添加以下代码:

RUN pip install --upgrade pip

这样可以使pip升级,并且可以顺利安装所有项目依赖项。


1

我正在使用基于 Windows x64 的处理器。但是,我还没有找到解决方案。我尝试了上面的所有方法,但都没有用。

然而,在尝试了数百次后,我找到了解决方案。我将 Python 版本从 3.10.0 降级到 3.8.10,现在一切正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接