0

小さなPythonボトルアプリケーションをREdHatopenshiftプラットフォームにデプロイしようとしていますが、500サーバーエラーが発生し続けます。アプリにSSHで接続してPythonを実行すると、ボトル(または使用する他のすべてのライブラリ)のインポートがimportErrorで失敗することがわかりました。

必要なモジュールを2つの方法でインストールしました(いくつかのチュートリアルに従って)。

setup.pyの両方:

install_requires=['sqlalchemy','bottle','requests']

データフォルダにvirtenvをインストールし、次のコマンドでアクティブ化します。

source virtenv/bin/activate

およびpipインストールボトルのsqlalchemyリクエスト

次に、wsgiハンドラーのエントリーポイント:'application'を次のように編集します。

import os
here = os.path.dirname(os.path.abspath(__file__))
os.environ['PYTHON_EGG_CACHE'] = os.path.join(here, '..', 'data', 'virtenv/lib/python2.7/site-packages')

virtualenv = os.path.join(here, '..', 'data/virtenv/bin/activate_this.py')
execfile(virtualenv, dict(__file__=virtualenv))

from myappname import application

(myappnameには実際のボトルアプリケーションロジックが含まれています)すべての変更後、git pushを使用してすべてをopenshiftにプッシュし、同じ500サーバーエラーを発生させます。アプリにSSHで接続して実行している場合

python application

インポートエラーが発生しますが、何も機能していないようです。ここでサポートをいただければ幸いです。

編集: アプリにSSHで接続し、手動で実行する場合

source virtenv/bin/activate

Pythonを実行しようとすると、すべてが期待どおりに機能します(少なくともほとんどが機能します)。何らかの理由で、activate_this.pyが期待どおりに動作しないようですが、手がかりはありませんか?

4

1 に答える 1

1

目立ったのは、卵の位置が少しずれていたことです。おそらく、それはタイプミスではなく、電子は卵と一緒にスクランブルされませんでした!:^)

os.environ ['PYTHON_EGG_CACHE'] = os.path.join(here、'..'、'data'、'virtenv / lib / python2.7 / site-packages')

2.7の代わりにpython2.6で試してください。これでモジュールがロードされるはずだと思います。

于 2012-03-17T20:31:01.257 に答える