【问题标题】:Paster requires to be run from program directory?Paster需要从程序目录运行?
【发布时间】:2012-10-03 13:56:07
【问题描述】:

我正在运行一个使用 supervisor 来监控一些 Python 应用程序的 solaris 服务器。

以前,我可以运行命令:

paster serve /opt/pyapps/menuadmin/prod.ini

来自服务器上的任何目录。最近出现了一些问题,并且 /opt 文件夹是从以前的备份中恢复的。此文件夹包含所有应用程序,包括主管。

现在我们面临的问题是,由于 Pylons 中的“版本冲突”,主管无法启动应用程序。

这就是它变得奇怪的地方,为什么会发生这些错误是没有意义的。

如果我从程序目录之外运行 paste 命令,它会抛出版本冲突错误。例如:

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

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

任何想法或cmets都非常感谢!!!!

【问题讨论】:

  • 为避免版本冲突,您可以尝试创建一个virtualenv,在此处安装所需版本的 Pylons 和其他库,然后从 supervisor 在 vi​​rtualenv 中运行应用程序。
  • 我们有多个虚拟环境,但是每个虚拟环境都出现问题,很奇怪
  • 也许您在每种情况下都在执行不同版本的paster 命令。例如如果/opt/csw是虚拟环境,则对应的paster命令应该位于/opt/csw/bin/paster中。

标签: python pylons subdirectory paster


【解决方案1】:

根据您所说的,您似乎正在运行两个不同版本的 paste。第一个版本运行较旧的 Pylons 包 0.9.7,而第二个版本具有满足或超过您的应用要求的更新版本。

我要做的是首先检查您运行的是哪个版本的贴图。从项目外部运行:

which paster

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

但是,正如其他人所评论的那样,在 virtualenv 中运行应用程序会更好,尤其是当您似乎表明您有多个 virtualenv 并因此有多个项目时。相信我,当我说它会让你免于日后的大量头痛时,从最初没有这样做的人身上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 2018-06-28
    • 2012-08-03
    • 2011-01-04
    • 1970-01-01
    相关资源
    最近更新 更多