错误:无法为使用 PEP 517 且无法直接安装的 scipy 构建***

Posted

技术标签:

【中文标题】错误:无法为使用 PEP 517 且无法直接安装的 scipy 构建***【英文标题】:ERROR: Could not build wheels for scipy which use PEP 517 and cannot be installed directly 【发布时间】:2020-08-05 12:18:57 【问题描述】:

我正在尝试通过 pip 在我的 64 位 ARMV8 板上安装 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,这是网上的答案之一。但是,它给了我同样的错误。下面是我得到的错误。

错误:

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: /usr/bin/python3 --versionPython 3.5.3/usr/bin/python3 -m pip --version 表示没有名为 pip 的模块 你需要install pip @phd:我已经安装了 pip。 /usr/bin/pip3 --version 从 /usr/lib64/python3.5/site-packages/pip-20.0.2-py3.5.egg/pip (python 3.5) 提供 pip 20.0.2 "/usr/bin/python3 -m pip --version没有名为 pip 的模块" 表示您没有安装 pip/usr/bin/python3 没有知道在哪里可以找到它。 /usr/bin/python3 -c "import sys; print(sys.path)"/usr/lib64/python3.5/site-packages 在列表中吗? 【参考方案1】:

在我的例子中,我只是使用了一个特定的 python 版本,即 3.8 作为我的基本图像,而不是最新的

之前: FROM python:3

之后: FROM python:3.8

为我解决了问题

【讨论】:

【参考方案2】:

试试

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

适用于 Python 3.10 或更高版本。

【讨论】:

【参考方案3】:

有类似的问题。我必须安装一些操作系统,然后才能安装缺少的 scikit 包(在我的情况下为 scikit-sparse)

sudo apt-get install libsuitesparse-dev

【讨论】:

非常感谢,这有助于解决数字海洋部署中的问题【参考方案4】:

我的问题是 mpi4py。我的 pip install 产生了这个错误,但是通过 Anaconda GUI 安装包就成功了。

【讨论】:

【参考方案5】:

我对 Docker 上的 Django Rest Framework(在 M1 Mac 上运行)有同样的问题,对我有用的是添加

RUN pip install --upgrade pip

就在我安装所有项目依赖项之前。

【讨论】:

【参考方案6】:

我在将 macOS 升级到最新版本后开始收到此错误。

我必须先运行 xcode-select --install 来重新安装 Xcode 工具。

关闭并重新打开终端窗口

然后,可以毫无问题地安装 pandas。

【讨论】:

【参考方案7】:

我面临的问题是,我一发布就升级到了下一个python版本。

建议:至少等待 1-2 个月再升级。

网络上的不同模块和库不会在 python 更新发布后立即更新,因此它们不会兼容。

只需将你的 python 版本降级到当前版本之前的版本,你就可以开始了。

无论您安装什么或做什么,除非开发人员对其进行更新,否则您将无法安装该模块。

【讨论】:

【参考方案8】:

对于最新的 M1 类型的 mac,在创建 virtualenv 之前将 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

(步骤 1 后不需要:--no-use-pep517)

之后一切正常

【讨论】:

【参考方案9】:

尝试安装一个订单版本。我在使用 python 3.10 时遇到了同样的问题。我只是将它降级到 python 3.9.7 并且工作正常

【讨论】:

【参考方案10】:

我遇到了同样的问题,尽管是在 Apple M1 Macbook Pro 上。这种情况下的解决方案是使用 Miniforge 而不是 Anaconda,因为后者还不支持 arm64 架构。

【讨论】:

【参考方案11】:

试试:

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

然后:

pip install couchbase

【讨论】:

【参考方案12】:

我在 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

【讨论】:

【参考方案13】:

我在尝试安装 tidyms 包时遇到了这个问题(这取决于 scipy

就我而言,使用 python 3.8 而不是 python 3.9“解决”了这个问题(至少能够安装)。

【讨论】:

【参考方案14】:

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

【讨论】:

【参考方案15】:
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 时遇到了类似的问题,使用以下步骤解决了上述问题:

    conda 安装 h5py

    点安装 keras

【讨论】:

【参考方案16】:

在我的情况下,我使用以下命令从 requirements.txt 文件安装:

pip install -r requirements.txt

并且收到此错误。我解决了它单独安装软件包 (pip install scipy) 并将我在 requirements.txt 中的 Scipy 版本替换为有效的版本。

【讨论】:

【参考方案17】:

直接做

pip install p5py
pip install PEP517

这样就可以了。

【讨论】:

对我不起作用。在 Windows 上安装 jq 时出现此错误。【参考方案18】:

我遇到了同样的问题。似乎 pip 使用 pkg-config - 如果您的主机操作系统缺少它,它将遇到此错误。我解决了:

sudo apt-get install -y pkg-config

然后重新运行pip

【讨论】:

【参考方案19】:

numpy 也会出现此错误,如果您使用的是新的 M1 芯片,恐怕您必须以不同的方式安装 numpy 之类的软件包。签出this。

【讨论】:

我不想直接编辑您的答案以进行类似于自我推销的事情...但是如果您可以对此进行测试并确认其有效,那么分享这可能会对其他人有所帮助。我已经成功地在 TF 2.5 上加速了 M1+GPU 的训练。这是我的环境:github.com/ctrahey/m1-tensorflow-config【参考方案20】:

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

【讨论】:

【参考方案21】:

我遇到了同样的问题,并通过使用 conda 安装模块解决了它。 在我的情况下 conda install -c conda-forge statsmodels 没有错误。

【讨论】:

【参考方案22】:

我有同样的问题。我在命令下运行后解决了这个问题

pip install --upgrade pip setuptools wheel

【讨论】:

在尝试安装 scipy 1.6.2 时,这在 Python 3.9.4、pip pip 21.0.1、macOS Big Sur 11.2.3 (20D91) 上不起作用。仍然收到相同的错误原始问题 阅读您的错误输出!这应该是这个问题的首选答案——因为它允许包管理器进行适当的处​​理。如果仍然失败,可能是因为您只阅读了错误消息的最后一行。对于我自己,我被一个运行 python2.7(商业)的应用程序困住了,由于 Python.h 头文件与版本指针不匹配,我不得不安装 python2-dev(旧版本)。 我仍然收到错误错误:无法调用 pkg-config【参考方案23】:

我的问题不在于 scipy,而在于 xmlsec。错误信息几乎相同:

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

我需要这个库,因为它是 python3-saml 的依赖项。从我读到的文档中,他们首先安装了这些软件包:

sudo apt-get install libxml2-dev libxmlsec1-dev

完成此操作后,python3-saml 的安装对我有用。

pip3 -V
pip 20.2.3

python -V
Python 3.8.0b3

可能其他库的答案不同,但它们都需要一些包才能构建,你应该找到适合你的包。

【讨论】:

我在 macOSx 上,所以 homebrew 没有找到 libxml2-dev libxmlsec1-dev,尝试 brew install libxml2,没有帮助。仍然出现错误:无法调用 pkg-config。错误:无法为使用 PEP 517 且无法直接安装的 xmlsec 构建*** @bjm88 这对你来说不是问题,因为 libxml2 库随 OS X 一起提供。我不太了解 OS X,但可能你可以尝试找到解决方案来安装 libxml2-dev然后。在这里查看这个答案:***.com/questions/26473197/…【参考方案24】:

我在使用 opencv-python 时遇到了同样的问题。对我有用的是将 pip 更新为:

pip3 install --upgrade pip

注意:我在 Linux 上使用 docker。

【讨论】:

谢谢!我一直在敲击键盘,试图通过 pip 安装 opencv-python,这解决了它! 您是否将其添加到您的 dockerfile 中? @HarryMoreno 是的,我用RUN pip3 install --upgrade -i https://mirrors.aliyun.com/pypi/simple pip 做过,您可以更改存储库以满足您的需要。 我最终使用了不同的基础映像 3.8-slim-buster,并且默认使用更新版本的 pip 我使用了一个旧的基础镜像(我相信是 Python 3.7)。如果它对你有用,那就太酷了 xD

以上是关于错误:无法为使用 PEP 517 且无法直接安装的 scipy 构建***的主要内容,如果未能解决你的问题,请参考以下文章

错误安装 streamlit 它说“错误:无法为使用 PEP 517 且无法直接安装的 pyarrow 构建***”

错误:无法为使用 PEP 517 且无法直接安装的 scipy 构建***

(Python:discord.py)错误:无法为使用 PEP 517 且无法直接安装的 multidict、yarl 构建***

无法在适用于 Windows 的 Python 3.7 上安装 win32core

如何将 PEP 517 和 PEP 518 用于本地可用(不在 PYPI 上)系统范围的 CLI Python 脚本

错误记录Mac 中 Python 报错 ( ERROR: Could not build wheels for numpy which use PEP 517 and cannot be in )(代