python - Pip 不会从 pypi 安装最新的可用版本(在这种情况下为 argparse)

标签 python macos pip argparse pypi

问题

我最近在做一些 python 项目,在 pip 上遇到了很多问题。未安装某些要求的最新版本。我在 osx我用了brew安装Python 2.7.6 .在我正在进行的项目中,我们只需安装如下要求:

pip install -r requirements.txt

在当前情况下,我需要安装 argparse==1.2.1 .这是实际显示的最新版本 on the pypi website

这是我的输出

Downloading/unpacking argparse==1.2.1 (from -r requirements.txt (line 4))
Could not find a version that satisfies the requirement argparse==1.2.1 (from -r requirements.txt (line 4)) (from versions: 0.1.0, 0.2.0, 0.3.0, 0.4.0, 0.5.0, 0.6.0, 0.7.0, 0.8.0, 0.9.0, 0.9.1, 1.0.1, 1.0, 1.1)
Some externally hosted files were ignored (use --allow-external to allow).
Cleaning up...
No distributions matching the version for argparse==1.2.1 (from -r requirements.txt (line 4))

我在不同类型的需求方面遇到了类似的问题,例如 matplotlib我手动安装的 here .

如您所见,我的 mac 上的 pip 只有那些 argparse 版本:0.1.0, 0.2.0, 0.3.0, 0.4.0, 0.5.0, 0.6.0, 0.7.0, 0.8.0, 0.9.0, 0.9.1, 1.0.1, 1.0, 1.1

尝试修复

我尝试使用 brew reinstall python 重新安装 python ,然后还尝试使用一些 xargs 重新安装我所有已安装的 python 包魔法:

pip freeze | xargs -I {} pip install {} --upgrade --force-reinstall

在尝试重新安装所有内容时,我遇到了大多数软件包的问题:error: invalid command 'egg_info' .我发现我有一个旧的 setuptools所以我运行它来升级:

pip install --upgrade setuptools

我现在可以重新安装所有内容,但 argparse 仍然存在同样的问题.

我问一个刚安装 osx 的 friend 到 pip install argparse他得到了1.1所以我设置了 precise32 vagrant box使用 python-dev 进行干净的 ubuntu 安装+ libevent-dev并且完全安装argparse==1.2.1 .

解决方法

为了继续开展该项目,我在 macOS 上安装了 argparse 1.1,目前它似乎可以正常工作。

问题

  1. 为什么我没有在 pypi 上看到最新版本?
    听起来并不是 pypi 上的所有库都可用于 osx。

  2. 有没有办法知道不同操作系统的版本可用性?

编辑:内部解决方案

参数解析 1.1好像和 1.2.1 一样如此输出所示

vagrant@precise32:~$ python
Python 2.7.3 (default, Sep 26 2013, 20:08:41)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import argparse
>>> argparse.__version__
'1.1'
>>> quit()
vagrant@precise32:~$ pip freeze | grep argparse
argparse==1.2.1

我尝试使用 --allow-external在 osx 上,需要将要求放在之后 --allow-external标志,而不是之前。这是安装 argparse 的有效命令并允许带有 pip 的外部托管文件对于 Python2.7:

pip install --allow-external argparse --upgrade
argparse an externally hosted file and may be unreliable
Downloading/unpacking argparse from http://argparse.googlecode.com/files/argparse-1.2.1.tar.gz#md5=2fbef8cb61e506c706957ab6e135840c
  Downloading argparse-1.2.1.tar.gz (69kB): 69kB downloaded

正如彼得所指出的,最新版本的 pip default to disallowing externally hosted files . 🙌

最佳答案

我认为这行是关键:

Some externally hosted files were ignored (use --allow-external to allow).

当我在这里安装 argparse 时,我得到了

You are installing an externally hosted file. Future versions of pip will default to disallowing externally hosted files.

Downloading argparse-1.2.1.tar.gz (69kB): 69kB downloaded

所以你有一个更新版本的 pip,默认情况下不允许外部托管文件

关于python - Pip 不会从 pypi 安装最新的可用版本(在这种情况下为 argparse),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21868684/

相关文章:

python - 根据列表从具有重复列的 DF 中选择行

objective-c - 如何在 Mail.app (Mac) 上创建邮件中间包含图像资源的邮件

macos - 通过自制软件的 gcc 没有 --without-multilib 选项

python - 知道如何在 Windows 框中更新 python PIP 吗?

python - 安装 MySQL 后 Pip Install 不起作用

python - 通过 3DR radio 将 Dronekit 和 Mission Planner 同时连接到 Pixhawk

python - 在 Python 中用于下载 NCBI 文件的多线程

python - PyLint W0231 super-init-not-called with __init__ of 祖 parent

macos - 在 MacOS 上,hunspell 在 Library/Spelling/中找不到现有的 .aff 和 .dic 文件

python - 为 Apache Hadoop 安装 Hue 浏览器时,Setuptools pip 失败,错误代码为 1