0

一部のPythonアプリケーションを監視するためにスーパーバイザーを使用するSolarisサーバーを実行しています。

以前は、次のコマンドを実行できました。

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

なぜこれが起こるのか、私は絶対に頭を悩ませることができません!

どんな考えやコメントも大歓迎です!!!!

4

1 に答える 1

1

あなたが言ったことに基づいて、あなたは2つの異なるバージョンのパスターを実行しているようです。最初のバージョンは古いPylonsパッケージ0.9.7を実行していますが、2番目のバージョンはアプリの要件を満たすか上回る最新バージョンを備えています。

私がすることは、最初にあなたが実行しているパスターのバージョンをチェックすることです。プロジェクトの外部から実行するだけです。

which paster

次に、プロジェクトディレクトリ内で同じコマンドを再度実行し、結果を比較します。パスが異なることに気付くと思います。その場合、あなたがする必要があるのは、最初のバージョンのパイロンのバージョンを更新することだけです。これは、グローバルインストールだと思います。

ただし、他の人がコメントしているように、特に複数のvirtualenvがあり、したがって複数のプロジェクトがあることを示しているように見える場合は、virtualenv内でアプリを実行する方がよいでしょう。後でこれをしなかった人からの頭痛の種からあなたを救うと私が言うとき、私を信じてください。

于 2012-10-16T08:14:05.563 に答える