【发布时间】: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