2009-08-28 7 views
1

Djangoアプリを共有サーバー上の本番環境にデプロイしようとしています。PythonシェルとFCGIサーバーのPythonパスに関する混乱:なぜそれらは異なっていますか?

私は、サーバーからエラーを取得していますので、私はPythonパスに問題を抱えているようだ: しかしproducts.models

という名前のモジュール、私はアプリと実行のルートに行くときモジュールがうまくロードするシェル。

'>>> from products.models import Answer 
'>>> import sys 
'>>> sys.path 
['/home/SecretUserAcct/django-projects/review_app', ...] 

上記のパスは、Djangoアプリケーションのルートを指しています。

私はこれがPythonパスの問題だと思っていますが、何がうまくいかないのか分かりません。ここで

はFCGIファイルされる:私はここで何を理解 $猫〜/ public_htmlの/ django.fcgi

#!/usr/local/bin/python2.6 
import sys 
import os 

# Insert PYTHONPATH values here, including the path to your application 
#sys.path.insert(0, '<path_to_your_app_directory>') 
sys.path.insert(0, '/home/SecretUserAcct/django-projects/') 
# Provide the location of your application's settings file. 
os.environ['DJANGO_SETTINGS_MODULE'] = 'review_app.settings' 

from django.core.servers.fastcgi import runfastcgi 
runfastcgi(method = "threaded", daemonize = "false", maxchildren=3, minspare=0, maxspare=1) 

をしないのですか?

+0

「Answer .__ file__」の値を最初のシェルにも表示できますか? はAttributeErrorに ファイル ""、行1、::products.modelsから –

+0

は>>> .__ FILE__ トレースバック(最後の最新の呼び出し)を回答>>>回答 をインポートするタイプのオブジェクトの回答 'は属性を持っていません'__file__' – BryanWheelock

答えて

0

私はやや混乱している - あなたが作業する場合にパスを持っていることである場合:

'/home/SecretUserAcct/django-projects/review_app' 

すなわち、アプリを含め、なぜあなたは、第二の非作業の場合には、代わりにしています挿入する

'/home/SecretUserAcct/django-projects/' 

つまり、アプリなし?確かに、sys.pathに入れたものに応じて、さまざまな形式のインポートが必要です。

+0

有効なポイントを作成します。その理由は、共有ホストからの指示によるものです。 は、#1のDjangoアプリケーションフォルダの場所です。これはアプリケーションフォルダ自体の場所ではなく、アプリケーションフォルダを含むフォルダです。たとえば、私のアプリケーションフォルダの名前が "mysite"で、 "python"という名前のフォルダに置いた場合、/ mysiteではなく/ pythonを指したいと思う。その理由は、Pythonがモジュールをロードする方法と関係があります。 – BryanWheelock

+0

@Bryanを使用すると、アプリケーションの名前を明示的に使用するために、インポートステートメントをそれに応じて変更する必要があります。 –

0

Djangoのdevサーバとmanage.pyシェルは、現在のディレクトリ(manage.pyから実行したディレクトリ)をPythonのパスに置きます。プロダクションモードで実行している場合、その機能に依存するコードを持っている場合は、パスをそれに応じて調整する必要があります。

関連する問題