Pip没有从pypi安装最新的可用版本(在本例中为argparse)

Gab*_*oux 17 python macos pip pypi argparse

问题

我最近参与了一些python项目,并且在pip没有安装某些要求的最新版本时遇到了很多问题.我在osx和我用brew安装Python 2.7.6.在我正在研究的项目中,我们只是pip install -r requirements.txt.在目前的情况下,我需要安装argparse==1.2.1.这是pypi网站上显示的实际最新版本

这是我的输出

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))
Run Code Online (Sandbox Code Playgroud)

我有不同类型的要求的类似问题,例如matplotlib在这里看到的手动安装.

正如你所看到的,pip on my mac只有那些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

试图解决

我尝试重新安装python brew reinstall python,然后还尝试用一些xargs魔法重新安装我所有已安装的python包:pip freeze | xargs -I {} sudo pip install {} --upgrade --force-reinstall.

在尝试重新安装所有内容时,我遇到了大多数软件包的问题:error: invalid command 'egg_info'.我发现我有一个旧的setuptools所以我pip install --upgrade setuptools和我现在可以重新安装一切,但仍然,同样的问题argparse.argparse仍然存在同样的问题.

我问了一个新安装的osx的朋友,pip install argparse他得到了1.1所以我设置了一个precise32 流浪盒用于干净的ubuntu安装python-dev+ libevent-dev并且没有任何麻烦安装argparse==1.2.1.

温度修复

为了继续处理这个项目,我在osx上安装了argparse 1.1,它似乎对我正在工作的东西工作得很好.

问题

我对pypi不太好(但是) - 有什么理由说我没有在pypi上显示最新版本?听起来并非pypi上的所有lib都可用于osx.有没有办法知道不同操作系统的版本可用性?

编辑:内部解决方案

argparse 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
Run Code Online (Sandbox Code Playgroud)

我试图--allow-external在osx 上使用,但没有意识到它需要再次使用包的名称.

sudo pip install argparse --allow-external argparse --upgrade
Run Code Online (Sandbox Code Playgroud)

和瞧瞧:)

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
Run Code Online (Sandbox Code Playgroud)

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

Pet*_*son 9

我认为这条线是关键:

某些外部托管文件被忽略(使用--allow-external允许).

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

您正在安装外部托管的文件.未来版本的pip将默认禁用外部托管文件.

正在下载argparse-1.2.1.tar.gz(69kB):69kB已下载

因此,您有一个较新版本的pip,默认情况下不允许外部托管文件


don*_*ner 9

这是我用pip 1.5.4安装argparse的命令:

pip install --allow-all-external argparse==1.2.1
Run Code Online (Sandbox Code Playgroud)