【问题标题】:installing scipy on cygwin / win7在 cygwin / win7 上安装 scipy
【发布时间】:2019-12-24 15:46:35
【问题描述】:

刚刚进入 python 并需要安装一些数字处理包,其中包括在 windows 7 机器上运行的 cygwin 环境中的 scipy。注意:我不想重新制作整个版本或主版本,我只想安装 scipy 以供使用。 scipy 网站说我应该可以使用 pip 安装它。但是,当我尝试安装它时:

$  pip install scipy

...我收到一个错误:

pip._internal.exceptions.InstallationError: Command errored out with exit status 1: 

...后面是表面上导致错误的命令行。如果我剪切/粘贴命令行以查看导致错误的原因,我会得到大量输出,包括以下内容:

Building wheel for Cython (setup.py): finished with status 'error'
ERROR: Failed building wheel for Cython

所以看起来无论是谁制作了这个包,它都会调用 gcc 来真正编译一个依赖项——在这种情况下是 cython——实际上已经安装了:

$ cython --version
Cython version 0.29.14

我看到 scipy 包需要 Cython>=0.29.13,但不幸的是 pip 似乎没有考虑到这一点。它不仅以某种方式错过了 cython 已经存在的事实,而且实际上是在尝试编译一个全新的...@_@ [有趣的是,cython 网站说最新版本是 0.28.5...]

仅供参考:

$ pip --version
pip 19.3.1 from /usr/lib/python3.6/site-packages/pip (python 3.6)

我也尝试从https://pypi.org/simple/scipy 下载存档并解压缩,然后尝试在本地使用 pip:

$ pip install --no-index --find-links=. .
Looking in links: .
Processing /usr/local/src/scipy-1.4.1
  Installing build dependencies ... error
  ERROR: Command errored out with exit status 1:
.
.
.
  ERROR: Could not find a version that satisfies the requirement wheel (from versions: none)
  ERROR: No matching distribution found for wheel
  ----------------------------------------
ERROR: Command errored out with exit status 1:

所以我找到了一些 Windows 二进制文件。试图从https://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy 下载它们,我面临.whl 文件。研究中,我发现.whl 文件实际上是一个独立的轮子,可通过 pip 安装。我尝试这样做:

pip install --use-wheel --no-index --find-links=. scipy-1.4.1-cp38-cp38-win32.whl

...我明白了

no such option: --use-wheel

然后:

$ pip install --no-index --find-links=. *.whl
ERROR: scipy-1.4.1-cp38-cp38-win32.whl is not a supported wheel on this platform.

显然 cygwin 不支持 windows 发行版。

有人有这方面的经验吗? 关于我还能尝试什么的任何想法?

谢谢。

【问题讨论】:

  • 很难了解您的情况到底发生了什么,因为这很大程度上取决于一些未给出的系统路径。您还尝试在 py3.6 安装中安装 python3.8 轮子,这肯定会被拒绝。并且还要小​​心混合不同的构建源(例如 numpy 的 pip install + gohlke scipy)。我不会推荐这个。
  • 我确认 cygwin 的 py 将无法自动使用预构建轮子。看来您需要从源代码构建它。这可能很难。 Cygwin 可能会帮助您处理最烦人的部分 blas/lapack 的二进制文件。但我没有检查包是否可用。不确定,为什么要针对 cygwin。也许 MSYS2 是一个候选者。它没有最新的 scipy 二进制文件,但有一个 recent one(支持 py38)。
  • @sascha 感谢您的回复!实际上根据python --version,安装的python是Python 3.8.0b4。但是,您指出的更重要的问题似乎是这些 python 包需要从头开始重建......我已经找到并安装了 libblas 和 lapack,但仍然遇到问题。我会继续破解它。感谢您的帮助。
  • 我对版本冲突的观察来自$ pip --version pip 19.3.1 from /usr/lib/python3.6/site-packages/pip (python 3.6)。这个 pip 肯定是某些 python 3.6 的一部分。
  • cygwin 上的可用软件包列表位于 cygwin.com/packages/package_list.html。 Cygwin 在 python36-numpy 包上有它的。我认为最好还是使用默认的 cygwin python-3.6 并删除仍然不完整的 python-3.8 作为附加包。

标签: python scipy cygwin cython


【解决方案1】:

Cygwin 有自己的打包系统,~~Cygwin 已经有一个 scipy 二进制包~~。更新:我不在我的电脑前,所以我不确定,但一些谷歌搜索表明可能 没有 毕竟是 python3-scipy 包。见下文...

当您安装 Cygwin 时,您可能通过了图形安装程序,它允许您选择要在 Cygwin 中安装的软件包。您始终可以通过重新运行安装程序并选择其他软件包来安装新软件包。

但是,我发现在现有的 Cygwin 安装中使用命令行包安装程序apt-cyg 更容易。

你可以通过运行安装它

$ wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
$ install apt-cyg /usr/local/bin

然后运行

$ apt-cyg install python3-scipy

就是这样。

如果根据我的更新,这不起作用,您也可以从源代码构建 scipy,但这需要很长时间并且需要安装许多构建依赖项。我想我至少应该尝试一下:

$ apt-cyg install python3-cython python3-numpy python3-devel openblas-devel gcc gfortran

那就试试

$ python3 -m pip install scipy

如果这仍然不起作用,请告诉我,我会添加进一步的更新。我在 Cygwin 上构建了 scipy 很多次,所以我知道它可以工作,但我是在脑海中写下这个。

目前 PyPI 不支持为 Cygwin 上传二进制轮子。我一直想改变它,但我还没有机会。但与此同时,许多流行的科学 Python 包已经在 Cygwin 包存储库中有包。

【讨论】:

  • 感谢您的精彩提示。是的,我使用的是 gui 安装程序,但从现在开始我将使用 apt-cyg!确认,不,目前没有可用于 cygwin 的 scipy 包;它不会出现在 gui 安装程序中,并且运行 apt-cyg install python3-scipy 会返回 Unable to locate package python3-scipy。在您上面提到的软件包中,pip 说除了 gfortran 和 python3-devel 之外的所有软件包都已安装。我安装了 python3-devel,但 apt-cyg 找不到 gfortran。我确实有 libgfortran4。 python3 -m pip install scipy 上的许多错误 [见下文]。
  • python3 -m pip install scipy - 对于初学者来说,它看起来像是在尝试重新创建 numpy.我得到Collecting numpy>=1.13.3,但是已经安装了 numpy [v. 1.16.2],它会获取 numpy-1.18.0.zip。然后它会尝试为 numpy 构建和编译很多东西。它还查找许多不同的 fortran 编译器,但不查找 gcc-fortran [已安装]。
  • 对,gcc-fortran 就是我的意思。它应该工作。您可能缺少其他一些依赖项,但我不确定。它通常对我来说很好。
  • 如果由于某种原因它一直坚持重新安装 Numpy(它不应该......)你可以尝试pip 的选项,比如--no-deps
  • 如果这个问题被更新为一个明确的答案,并删除错误的部分(例如,建议安装一个不存在的 cygwin 包),那就太好了。
猜你喜欢
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多