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

2024-04-19 13:29:02 发布

您现在位置:Python中文网/ 问答频道 /正文

问题

我最近在一些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 magic:pip freeze | xargs -I {} sudo pip install {} --upgrade --force-reinstall重新安装我安装的所有python包。

在尝试重新安装所有程序包时,我遇到了大多数程序包的问题:error: invalid command 'egg_info'。我发现我有一个旧的setuptools所以我现在可以重新安装所有的东西,但是仍然存在argparse的问题。argparse也有同样的问题。

我让一个刚安装osx的朋友pip install argparse,他得到了1.1,所以我设置了一个precise32vagrant box来安装一个干净的带有python-dev+libevent-dev的ubuntu,安装argparse==1.2.1完全没有问题。

温度修正

为了继续进行这个项目,我在osx上安装了argparse 1.1,它似乎可以很好地满足我的工作。

问题

我对pypi还不是很在行,但是有什么原因我不能在pypi上显示最新的版本吗?听起来并不是pypi上的所有lib都可用于osx。有没有办法知道不同操作系统的版本可用性?

编辑:内部解决方案

argparse1.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

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

sudo pip install argparse --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


Tags: installpipthe项目from版本txtpypi
2条回答

我认为这句话是关键:

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,默认情况下不允许外部托管文件

下面是我使用pip 1.5.4安装argparse时使用的命令:

pip install --allow-all-external argparse==1.2.1

相关问题 更多 >