2012-10-03 53 views
0

我正在运行一个使用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 

我完全无法理解为什么会发生这种情况!

任何想法或意见都是值得赞赏的!

+0

为了避免版本冲突,你可以尝试创建一个[virtualenv](http://www.virtualenv.org),在那里安装Pylons和其他库的必需版本,并从supervisor的virtualenv中运行应用程序。 – pablodcar

+0

我们有多个虚拟环境,但问题仍然存在,这很奇怪 – JackalopeZero

+0

也许你在每种情况下都执行不同版本的'paster'命令。例如如果'/ opt/csw'是一个虚拟环境,相应的'paster'命令应该位于'/ opt/csw/bin/paster'中。 – pablodcar

回答

1

根据你所说的,你似乎正在运行两种不同版本的贴纸。第一个版本运行较老的Pylons包0.9.7,而第二个版本则更新版本,以满足或超出您的应用程序的要求。

我会做的是首先检查你正在运行哪个版本的贴纸。从项目外仅运行:

which paster 

然后在项目目录中再次运行相同的命令,并比较结果。我怀疑你会发现路径不同。如果是这样的话,那么你所需要做的就是更新第一个版本的挂架版本,我猜这是全局安装。

但是,正如其他人所说的,在virtualenv中运行应用程序会更好,特别是如果您似乎表示您有多个virtualenv并因此有多个项目。当我说它时,请相信我,这会让你免受后来头痛的困扰,从最初不这样做的人那里解脱出来。

相关问题