【问题标题】:ERROR: Could not build wheels for scipy which use PEP 517 and cannot be installed directly错误:无法为使用 PEP 517 且无法直接安装的 scipy 构建轮子
【发布时间】: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 在列表中吗?

标签: python scipy pip embedded-linux python-wheel


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

                            1. conda 安装 h5py

                            2. 点安装 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然后。在这里查看这个答案:stackoverflow.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
                                      猜你喜欢
                                      • 2021-06-22
                                      • 2020-11-01
                                      • 2021-04-14
                                      • 2021-02-28
                                      • 2020-10-16
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 2021-03-07
                                      • 2020-12-23
                                      相关资源
                                      最近更新 更多