我正在运行一个使用supervisor监视一些Python应用程序的solaris服务器。从服务器上的任何目录Paster需要从程序目录运行?
paster serve /opt/pyapps/menuadmin/prod.ini
:
以前,我可以运行该命令。最近出现了一些问题,并且/ opt文件夹从之前的备份中恢复。该文件夹包含所有应用程序,包括管理员。
现在我们正面临着由于Pylons中的“版本冲突”导致主管不会启动应用程序的问题。
这是它变得怪异的地方,它为什么会出现这些错误是没有意义的。
如果我从程序目录外部运行paster命令,它会抛出版本冲突错误。例如:
cd/
paster serve /opt/pyapps/menuadmin/prod.ini
Traceback (most recent call last):
File "/opt/csw/bin/paster", line 8, in <module>
load_entry_point('PasteScript==1.7.5', 'console_scripts', 'paster')()
File "/opt/csw/lib/python2.6/site-packages/PasteScript-1.7.5-py2.6.egg/paste/script/command.py", line 93, in run
commands = get_commands()
File "/opt/csw/lib/python2.6/site-packages/PasteScript-1.7.5-py2.6.egg/paste/script/command.py", line 135, in get_commands
plugins = pluginlib.resolve_plugins(plugins)
File "/opt/csw/lib/python2.6/site-packages/PasteScript-1.7.5-py2.6.egg/paste/script/pluginlib.py", line 82, in resolve_plugins
pkg_resources.require(plugin)
File "/opt/csw/lib/python2.6/site-packages/setuptools-0.6c9-py2.6.egg/pkg_resources.py", line 626, in require
File "/opt/csw/lib/python2.6/site-packages/setuptools-0.6c9-py2.6.egg/pkg_resources.py", line 528, in resolve
pkg_resources.VersionConflict: (Pylons 0.9.7 (/opt/csw/lib/python2.6/site-packages/Pylons-0.9.7-py2.6.egg), Requirement.parse('Pylons>=0.10'))
但是,如果我从程序目录内运行命令,它将运行良好。例如:
cd /opt/pyapps/menuadmin/
paster serve /opt/pyapps/menuadmin/prod.ini
Starting server in PID 29902.
serving on http://127.0.0.1:3002
我完全无法理解为什么会发生这种情况!
任何想法或意见都是值得赞赏的!
为了避免版本冲突,你可以尝试创建一个[virtualenv](http://www.virtualenv.org),在那里安装Pylons和其他库的必需版本,并从supervisor的virtualenv中运行应用程序。 – pablodcar
我们有多个虚拟环境,但问题仍然存在,这很奇怪 – JackalopeZero
也许你在每种情况下都执行不同版本的'paster'命令。例如如果'/ opt/csw'是一个虚拟环境,相应的'paster'命令应该位于'/ opt/csw/bin/paster'中。 – pablodcar