2017-02-14 3 views
0

Python ... почему это происходит?python 2.7 - Requirement.parse ('six> = 1.6.0'))

вдруг я получаю эту ошибку:

Traceback (most recent call last): 
    File "setup.py", line 36, in <module> 
    zip_safe=False) 
    File "/usr/lib/python2.7/distutils/core.py", line 111, in setup 
    _setup_distribution = dist = klass(attrs) 
    File "/usr/local/lib/python2.7/dist-packages/setuptools/dist.py", line 320, in __init__ 
    _Distribution.__init__(self, attrs) 
    File "/usr/lib/python2.7/distutils/dist.py", line 287, in __init__ 
    self.finalize_options() 
    File "/usr/local/lib/python2.7/dist-packages/setuptools/dist.py", line 386, in finalize_options 
    ep.require(installer=self.fetch_build_egg) 
    File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2324, in require 
    items = working_set.resolve(reqs, env, installer, extras=self.extras) 
    File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 859, in resolve 
    raise VersionConflict(dist, req).with_context(dependent_req) 
pkg_resources.VersionConflict: (six 1.5.2 (/usr/lib/python2.7/dist-packages), Requirement.parse('six>=1.6.0')) 

когда я бег python setup.py develop

Вот мой setup.py файл

from setuptools import setup 

setup(name='bootops', 
     version='0.1.1', 
     description='Boo', 
     url='http://github.com/boo/bootops', 
     author='dude', 
     author_email='dude', 
     license='GPLv3', 
     packages=['bootops'], 
     package_data={'bootops': ['classes/*.py','classes/syptec/*.py','classes/syptec/tools/*.py']}, 
     entry_points = { 
     "console_scripts": ['bootops = bootops.bootops:main'] 
     }, 
     install_requires=[ 
      'six==1.6.0',  
      'setuptools>=11.3',  
      'boto', 
      'zc.zk', 
      'paramiko>=2.0', 
      'apache-libcloud', 
      'requests>=2.9.1', 
      'pyyaml', 
      'pytz', 
      'gevent', 
      'redis>=2.10.5', 
      'dnspython', 
      'jinja2', 
      'netaddr', 
      'python-nmap', 
      'scapy', 
      'hashids' 
     ], 
     zip_safe=False) 

Я добавил ниже установочный файл еще Я все еще получаю ошибку: six == 1.6.0

Если Я запускаю:

pip install six==1.6.0 
python setup.py develop 

Тогда это работает!

Я имею в виду wowee. Зачем настраивать и решать проблемы самостоятельно?

ответ

4

Файл установки требует наличия версии модуля six, превышающей 1.6.0, но у вас установлена ​​версия 1.5.2, поэтому она вызывает исключение VersionConflict. Когда вы устанавливаете соответствующую версию six, она работает правильно, потому что вы выполнили все требования к версированию в файле setup.py.

+0

Ваш комментарий очевиден и здравый смысл. почему install_requires не устанавливает правильную версию? – Tampa

+0

«install_requires» не является парой (глагол, сущ.) («Install», «require [ment] s»), но пара (существительное, глагол) («install [ation]», «требует [...] ") - то есть вы утверждаете, что установка должна проверить эти версии для продолжения. Нет необходимости автоматически устанавливать правильную версию. –