2013-06-18 2 views
4

Я пытаюсь получить библиотеки Python для Reddit, установленные на моем Mac. Я хочу запускать их с помощью PyCharm для разработки, поскольку мне это нравится как среда разработки Python.Разрешение конфликта версий пакета Python в Reddit install

Я запускаю серверы Cassandra, Memcached, RabbitMQ и Postgres внутри экземпляра Virtual Box, доступный через адаптер Virtual Box Host-only. Это работает, так как я могу запустить Reddit в Virtual Box и получить доступ к нему с моего Mac просто отлично.

При запуске скрипта paster, чтобы узнать, работает ли исходная установка Reddit Python на компьютере Mac. Я получаю следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "/Users/inflector/software/new-day/reddit/dev/bin/paster", line 8, in <module> 
    load_entry_point('PasteScript==1.7.5', 'console_scripts', 'paster')() 
    File "/Users/inflector/software/new-day/reddit/dev/lib/python2.7/site-packages/paste/script/command.py", line 93, in run 
    commands = get_commands() 
    File "/Users/inflector/software/new-day/reddit/dev/lib/python2.7/site-packages/paste/script/command.py", line 135, in get_commands 
    plugins = pluginlib.resolve_plugins(plugins) 
    File "/Users/inflector/software/new-day/reddit/dev/lib/python2.7/site-packages/paste/script/pluginlib.py", line 82, in resolve_plugins 
    pkg_resources.require(plugin) 
    File "build/bdist.linux-i686/egg/pkg_resources.py", line 666, in require 
    File "build/bdist.linux-i686/egg/pkg_resources.py", line 569, in resolve 
pkg_resources.VersionConflict: (WebOb 1.2.3 (/Users/inflector/software/new-day/reddit/dev/lib/python2.7/site-packages), Requirement.parse('webob==1.0.8')) 

Если я понижаем установку на WebOb 1.0.8, я получаю обратное, он хочет "WebOb> = 1,2.

«пип» список показывает установки этих пакетов:

amqplib (1.0.2) 
Babel (0.9.6) 
bcrypt (1.0.2) 
Beaker (1.6.4) 
BeautifulSoup (3.2.1) 
beautifulsoup4 (4.2.1) 
boto (2.9.5) 
cffi (0.6) 
chardet (2.1.1) 
crypto (1.1.0) 
cssutils (0.9.5.1) 
Cython (0.19.1) 
decorator (3.4.0) 
FormEncode (1.2.6) 
kazoo (1.1) 
l2cs (2.0.2) 
lxml (3.2.1) 
Mako (0.8.1) 
MarkupSafe (0.18) 
nose (1.3.0) 
Paste (1.7.5.1) 
PasteDeploy (1.5.0) 
PasteScript (1.7.5) 
PIL (1.1.7) 
psycopg2 (2.5) 
py-bcrypt (0.3) 
pyasn1 (0.1.7) 
PyCAPTCHA (0.4) 
pycassa (1.9.0) 
pycountry (0.14.8) 
pycparser (2.09.1) 
pycrypto (2.6) 
Pygments (1.6) 
pylibmc (1.2.3) 
Pylons (0.9.7) 
pytz (2013b) 
repoze.lru (0.6) 
requests (1.2.3) 
Routes (1.11) 
rsa (3.1.1) 
simplejson (3.3.0) 
six (1.3.0) 
snudown (1.1.5) 
SQLAlchemy (0.7.4) 
stripe (1.9.1) 
Tempita (0.5.1) 
thrift (0.9.0) 
waitress (0.8.5) 
WebError (0.10.3) 
WebHelpers (1.3) 
WebOb (1.2.3) 
WebTest (2.0.6) 
Whoosh (2.4.1) 
wsgiref (0.1.2) 
zope.interface (4.0.5) 

Моя гипотеза состоит в том, что по крайней мере один из этих пакетов требует WebOb == 1.0.8 и по меньшей мере один другой требует WebOb> = 1.2

Я установил virtualenv для установки Reddit и установил его с опцией -no-site-packages, так что я имею дело только с пакетами, которые мне нужны для Reddit. Я вручную установил все, что мне нужно. Так что это фактически минимальный набор пакетов. Мне нужен каждый из них, но, возможно, не все из них являются правильными версиями. Установщик Reddit не указывает версии для каждого пакета, только некоторые из них.

Итак, как мне отслеживать эти зависимости? Как получить список требований для каждого пакета, установленного в virtualenv?

И где находится файл: «build/bdist.linux-i686/egg/pkg_resources.py»? Я не могу найти его нигде в моей системе. И Mac не является Linux, поэтому это кажется странным.

Я очень опытный программист, C++, Java, Object Pascal, Objective C и т. Д., Но не эксперт Python. Таким образом, система пакетов Python для меня слишком большая. Я могу использовать pip и запускать скрипты setup.py, но я их еще не убегаю.

ответ

5

Проблема заключалась в наличии версии 2.0.6 библиотеки WebTest. Эта версия требовала WebOb> = 1.2.

Чтобы определить требования к модулям python. Я cd'd в каталог сайтов-пакеты для виртуального окр, а затем побежал:

grep WebOb *.egg-info/requires.txt 

который вернулся:

Pylons-0.9.7-py2.7.egg-info/requires.txt:WebOb>=0.9.6.1 
WebError-0.10.3-py2.7.egg-info/requires.txt:WebOb 
WebTest-2.0.6-py2.7.egg-info/requires.txt:WebOb>=1.2 

, где я был в состоянии видеть, что WebTest был противоречивый пакет.

Я был в состоянии войти в мою установку Ubuntu, чтобы узнать, какой пакет для WebTest был установлен, и обнаружил, что WebTest 1.3.3 работал над стандартной установкой Ubuntu Reddit. Так что я удалил оба WebOb 1.2 и WebTest 2.0.6, а затем побежал:

pip install webob==1.0.8 
pip install webtest==1.3.3 

Это избавившись от конфликта WebOb конфликта версий. Я все еще не могу запустить Reddit, но, по крайней мере, я удалил этот блок.

0

Ученик Reddit adds a Ubuntu private package repository. PPA включает в себя множество вариантов пакетов python Ubuntu.

Если вы работаете в Ubuntu, вы также можете установить PPA.

Смежные вопросы