解决Reddit-ins中的Python包版本冲突

2024-06-01 07:02:44 发布

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

我想把Reddit的Python库安装到我的Mac上。我想使用PyCharm进行开发,因为我喜欢它作为Python IDE。

我在一个虚拟机实例中运行Cassandra、Memcached、RabbitMQ和Postgres服务器,该实例可通过虚拟机主机专用适配器访问。这是工作,因为我可以启动Reddit在虚拟框和访问它从我的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”。

“pip list”显示已安装的这些软件包:

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

我已经为Reddit安装设置了一个virtualenv,并使用--no site packages选项对其进行了设置,以便只处理Reddit所需的包。我手动安装了所有我认为需要的东西。所以这实际上是最小的一组包。我需要每一个,但也许不是所有的都是正确的版本。Reddit安装程序并没有为每个包指定版本,只是为其中一些包指定了版本。

那么我该如何追踪这些依赖关系呢?如何获取安装在virtualenv中的每个包的需求列表?

文件“build/bdist.linux-i686/egg/pkg_resources.py”来自哪里?我在系统里找不到。而且Mac不是linux,所以这看起来很奇怪。

我是一个经验丰富的程序员,C++、java、Object Pascal、Objo C等,但还不是一个专家Python程序员。所以在这一点上,Python包系统对我来说太黑了。我可以使用pip并运行setup.py脚本,但我还没有发现它们。


Tags: inpydevnewpackageslinesitesoftware
2条回答

这个问题来自于WebTest库的版本2.0.6。这个版本要求WebOb>;=1.2。

以确定python模块的需求。我将cd放入虚拟env的site packages目录,然后运行:

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运行,但至少我移除了这个块。

Reddit的安装程序是addsUbuntu private package repository。PPA包含许多Ubuntu python包的变体。

如果你运行的是Ubuntu,你也可以安装PPA。

相关问题 更多 >