2015-01-15 11 views
2

Я получаю действительно странное поведение при попытке установить определенную версию пакета configparser (3.3.0r2).Python pip weird package version parsing

Может ли кто-нибудь объяснить мне, что именно происходит?

Спасибо!

Pip версия: 6.0.6 Python: 2,6 Distro: Centos 6,5

Ниже журнала Пипа:

пип -vvv установить ConfigParser == 3.3.0r2

Collecting configparser==3.3.0r2 
    Getting page https://pypi.python.org/simple/configparser/ 
    URLs to search for versions for configparser==3.3.0r2: 
    * https://pypi.python.org/simple/configparser/ 
    Getting page https://pypi.python.org/simple/configparser/ 
    Analyzing links from page https://pypi.python.org/simple/configparser/ 
    Found link https://pypi.python.org/packages/source/c/configparser/configparser-3.2.0r1.tar.gz#md5=49ff19dd5511b069285a293dd3907902 (from https://pypi.python.org/simple/configparser/), version: 3.2.0r1 
    Found link https://pypi.python.org/packages/source/c/configparser/configparser-3.2.0r2.tar.gz#md5=ecdc31147658bd9340bcd605c1b7a849 (from https://pypi.python.org/simple/configparser/), version: 3.2.0r2 
    Found link https://pypi.python.org/packages/source/c/configparser/configparser-3.2.0r3.tar.gz#md5=8500fd87c61ac0de328fc996fce69b96 (from https://pypi.python.org/simple/configparser/), version: 3.2.0r3 
    Found link https://pypi.python.org/packages/source/c/configparser/configparser-3.3.0r1.tar.gz#md5=b6c6a9409be55966a4481f3a729070b3 (from https://pypi.python.org/simple/configparser/), version: 3.3.0r1 
    Found link https://pypi.python.org/packages/source/c/configparser/configparser-3.3.0r2.tar.gz#md5=dda0e6a43e9d8767b36d10f1e6770f09 (from https://pypi.python.org/simple/configparser/), version: 3.3.0r2 
    Found link https://pypi.python.org/packages/source/c/configparser/configparser-3.5.0b1.tar.gz#md5=d60ca2c714acb4adaf5818c6a1ffd78b (from https://pypi.python.org/simple/configparser/), version: 3.5.0b1 
    Found link https://pypi.python.org/packages/source/c/configparser/configparser-3.5.0b2.tar.gz#md5=ad2a71db8bd9a017ed4735eac7acfa07 (from https://pypi.python.org/simple/configparser/), version: 3.5.0b2 
    Could not find a version that satisfies the requirement configparser==3.3.0r2 (from versions: 3.2.0.post1, 3.2.0.post2, 3.2.0.post3, 3.3.0.post1, 3.3.0.post2, 3.5.0b1, 3.5.0b2) 
    Cleaning up... 
    No distributions matching the version for configparser==3.3.0r2 
    Exception information: 
    Traceback (most recent call last): 
    File "/tmp/omnimw/lib/python2.6/site-packages/pip/basecommand.py", line 232, in main 
     status = self.run(options, args) 
    File "/tmp/omnimw/lib/python2.6/site-packages/pip/commands/install.py", line 339, in run 
     requirement_set.prepare_files(finder) 
    File "/tmp/omnimw/lib/python2.6/site-packages/pip/req/req_set.py", line 333, in prepare_files 
     upgrade=self.upgrade, 
    File "/tmp/omnimw/lib/python2.6/site-packages/pip/index.py", line 490, in find_requirement 
     'No distributions matching the version for %s' % req 
    DistributionNotFound: No distributions matching the version for configparser==3.3.0r2 

UPD : Получение еще более удивительного поведения, попытка установить этот пакет с помощью протокола 1.4.1:

# pip install configparser==3.3.0r2 

Downloading/unpacking configparser==3.3.0r2 
    Could not find a version that satisfies the requirement configparser==**3.3.0r2** (from versions: 3.2.0r1, 3.2.0r2, 3.2.0r3, 3.3.0r1, **3.3.0r2**, 3.5.0b1, 3.5.0b2) 
Cleaning up... 
No distributions matching the version for configparser==3.3.0r2 
+1

попробуйте 'pip install configparser == 3.3.0.post2', он работает для меня на ubuntu. – Terran

ответ

0

версии 3.3.0r2 нормируется (по PEP 440) до версии 3.3.0.post2, которые вы можете проверить с помощью packaging пакета самостоятельно:

>>> from packaging.version import Version, parse 
>>> parse('3.3.0r2') 
<Version('3.3.0.post2')> 
>>> Version('3.3.0r2') == Version('3.3.0.post2') 
True 

из журнала, кажется, что пип нормализует только доступные версии, но не указанный тот, который позже перерывает сравнение, и это явно ошибка в пипсе.
Она была исправлена ​​в версии 7.1.1 ПГИ и, вероятно, описано в следующей записи в примечаниях к выпуску:

нормализуют после освобождения для написания об/г префиксов.