Numpy: python 2.7 上的 pip install 尝试安装 numpy 1.17,与 NEP 14 相反

创建于 2019-08-16  ·  15评论  ·  资料来源: numpy/numpy

pip install numpy在 python 2.7 上尝试安装 numpy 1.17,它放弃了对 python 2.7 的支持。 这与NEP 14 中描述的功能相反,其中指出:

... Python 2 上的pip install numpy将继续永久提供最后一个工作版本...

Numpy/Python 版本信息:

点子版本:19.2.2
python: 2.7.15 |Anaconda, Inc. | (默认,2018 年 10 月 23 日,18:31:10) n[GCC 7.3.0]

32 - Installation

最有用的评论

真正的问题是你为什么使用 python 2.7

仍然运行 2.7 有很多正当理由,请不要在这里开始辩论。

所有15条评论

pip 或 setuptools 中似乎存在导致此问题的错误,您可以尝试升级 pip 吗? (另请参阅 gh-13911,我希望它是重复的)。 您可以使用 pip 本身升级 pip: python -m pip install --upgrade pippython -m pip install --upgrade setuptools

真正的问题是你为什么使用 python 2.7

真正的问题是你为什么使用 python 2.7

仍然运行 2.7 有很多正当理由,请不要在这里开始辩论。

pip 或 setuptools 中似乎存在导致此问题的错误,您可以尝试升级 pip 吗? (另请参阅gh-13911 ,我希望它是重复的)。 您可以使用 pip 本身升级 pip: python -m pip install --upgrade pippython -m pip install --upgrade setuptools

我正在运行两者的最新版本 - pip 19.2.2 和 setuptools 41.1.0。

真正的问题是你为什么使用 python 2.7

仍然运行 2.7 有很多正当理由,请不要在这里开始辩论。

确实有。 就我而言,我正在尝试运行尚未移植到 py3 的学术开发的科学分析软件。

但这里的重点不是我是否应该使用 python 2.7,而是 numpy 对预期功能做出了正式声明,这不是真正的功能。 在我看来,这就是错误。

我昨天注意到 pip 不会为 Python 2.7 安装 pytest 5.0.1,因为不支持 2.7,所以 pip 在某些情况下可以正常工作。 我想知道是否有一些信息需要为 1.17 更新?

您可以尝试python2.7 -mpip以确保 pip 知道正在运行的版本。 看起来您也在使用 Anaconda,当与 pip 混合使用时,这可能会很复杂。

which pip显示什么?

嗯,在我的机器上,pip 18.1 和 setuptools 41.0.1 工作正常(二进制和非二进制模式)。 升级到 19.2.2 和 41.1.0 对我来说没有任何改变。 python 版本是2.7.16+ (debian)。

正如 Chuck 指出的那样,我假设您确保使用python2.7 -mpip而不是pip以确保您获得最新安装的版本(以防您使用--user或有另一个pip 版本出于某种原因。)?

了解究竟是什么导致了这种情况真的很好。

@IPetrik你能把一个完全可重复的例子放在一起吗? 您正在使用 Anaconda,因此类似于:

conda create -n py27-empty
conda activate py27-empty
conda install pip
# Some diagnostics
which pip
pip --version
conda list setuptools

pip install numpy

我尝试了多种变体,但无法重现您的问题。

在尝试准备一个最小的示例后,我发现了问题:我们将pip.conf中的本地 devpi PyPI 缓存服务器用作extra-index-url 。 如果我从pip.conf删除它,一切正常......哎呀。

嗯,看来 pip 应该处理这个问题。 缓存和pip.conf有什么特别之处吗? 我对那些东西很陌生。 @njsmith 有什么想法吗?

我想知道 devpi 服务器是否没有正确转发有关给定包的可用版本的元信息。

发现一个新的pip可以尝试为 Python 2.7 安装 1.17.0 的原因。 当包使用setup_requires='numpy'时会发生这种情况。 这是因为除非该包具有pyproject.toml (请参阅 https://github.com/pypa/pip/issues/6945#issuecomment-526479930),否则它将调用easy_install

有一个解决方法:在pip install package-with-setup-requires之前显式执行pip install numpy pip install package-with-setup-requires

解决方法是:该包应该添加一个pyproject.toml ,这将使该包的新版本消失。

发现一个新的pip可以尝试为 Python 2.7 安装 1.17.0 的原因。 当包使用setup_requires='numpy'时会发生这种情况。 这是因为这将调用easy_install除非该包具有pyproject.toml (参见pypa/pip#6945 (comment) )。

有一个解决方法:在pip install package-with-setup-requires之前显式执行pip install numpy pip install package-with-setup-requires

一个具体的例子是pip install pycuda ,它失败了:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/tmp/pip-build-LYaxup/pycuda/setup.py", line 251, in <module>
    main()
  ...
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 44, in _execfile
    code = compile(script, filename, 'exec')
  File "/tmp/easy_install-mp9NYd/numpy-1.19.0rc1/setup.py", line 182
    raise ValueError(f'Submodule {p} missing')
                                            ^
SyntaxError: invalid syntax

解决方法很简单,正如@rgommers 所指出的:首先执行pip install numpy==1.16.6 (对于最后一个与 Python 2.7 兼容的 NumPy 版本),然后重新尝试pip install pycuda

这是一个pip错误,而且看起来很严重。 我可以用 pip 20.1.1 重现它。 pip-2.7 install numpy正确安装1.16.6 ,因此 PyPI 上 numpy 的元数据是正确的。 pip-2.7 install pycuda确实尝试安装最新的 numpy 而不是1.16.6

可能已经报道了,我没有时间在未来几天研究它。 @artob如果您查看是否存在 Pip 问题,否则打开一个,将不胜感激。

此页面是否有帮助?
0 / 5 - 0 等级