我正在运行一个 solaris 服务器,该服务器使用 supervisor 来监视一些 Python 应用程序。
以前,我可以运行以下命令:
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
我绝对无法理解为什么会发生这种情况!
任何想法或意见都值得赞赏!!!
根据您所说的内容,您似乎正在运行两个不同版本的粘贴器。 第一个版本运行较旧的 Pylons 包 0.9.7,而第二个版本具有满足或超过应用要求的更新版本。
我要做的是首先检查您正在运行哪个版本的粘贴器。 从项目外部运行:
which paster
然后在项目目录中再次运行相同的命令并比较结果。 我怀疑你会发现路径不同。 如果是这种情况,那么您需要做的就是更新第一个版本的 pylons 版本,我猜这是全局安装。
但是,正如其他人所评论的那样,最好在virtualenv中运行应用程序,特别是如果您似乎表明您有多个virtualenv,因此有多个项目。 相信我,当我说它会让你以后免于头痛时,从最初没有这样做的人那里。