【发布时间】:2014-03-19 02:04:56
【问题描述】:
问题
我最近在一些 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 包magic:
pip freeze | xargs -I {} pip install {} --upgrade --force-reinstall
在尝试重新安装所有内容时,我遇到了大多数软件包的问题:error: invalid command 'egg_info'。我发现我有一个旧的setuptools,所以我运行它来升级:
pip install --upgrade setuptools
我现在可以重新安装所有内容,但 argparse 仍然存在同样的问题。
我问一个新安装 osx 的朋友到 pip install argparse,他得到了 1.1 所以我设置了一个 precise32 vagrant box 以使用 python-dev + libevent-dev 进行干净的 ubuntu 安装并且没有安装argparse==1.2.1的麻烦。
解决方法
为了继续开展该项目,我在 macOS 上安装了 argparse 1.1,目前它似乎可以正常工作。
问题
-
有什么原因我没有在 pypi 上显示最新版本吗?
听起来并不是 pypi 上的所有库都可用于 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
我尝试在 osx 上使用--allow-external,并且需要将要求放在之后 --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。 ????
【问题讨论】:
-
pip install -vv --no-install argparse说什么? -
argparse是Python2.7的标准配置。虽然pypy的版本号是1.2.1,但它的最后一次更改日期是2011 年。因此它不早于最新的Python 版本。 -
@hpaulj my
argparse.__version__在 Python 2.7.6 中返回'1.1',但不确定这是否是相同的版本号 -
别担心
1.1。由于它是标准库的一部分,因此该数字不再变化。 -
@PeterGibson
pip install -vv --no-install argparse说:DEPRECATION: '--no-install' and '--no-download are deprecated. See https://github.com/pypa/pip/issues/906. Requirement already satisfied (use --upgrade to upgrade): argparse in /usr/local/lib/python2.7/site-packages我用 vagrant 测试过,甚至认为安装的 argparse 版本是 1.2.1,argparse.__version__ 返回1.1。
标签: python macos pip argparse pypi