0

すべての選択肢を保存し、アプリケーションで再利用するための単純なモジュールを作成しました(CharFieldの選択肢を参照)。

ここに私のプロジェクト構造

project_name/  
  -- manage.py  
  -- settings.py
  -- ......
  -- apps/  
      -- __init__.py
      -- simple_app/
           -- __init__.py
           -- models.py
           -- ....
  -- common/
      -- __init__.py  
      -- choices/
           -- __init__.py  

私のcommon.choices.__init__。pyの中に私は持っています

from django.utils.translation import ugettext as _

SCALE_TYPE_CHOICES = (
    (1,_('Lineare')),
    (2,_('Logaritmica')),
    (3,_('Esponenziale'))
)

GENDER_CHOICES = (
    ('male',_('Maschio')),
    ('female',_('Femmina')),
    ('any',_('Tutti')),
)

およびapps.simple.models.py

from common.choices import SCALE_TYPE_CHOICES, GENDER_CHOICES
.....

私のpassenger_wsgi.py

import sys, os

sys.path.insert(0, os.getcwd())
sys.path.insert(0, os.path.join(os.getcwd(),"path_to_my_project"))
sys.path.insert(0, os.path.join(os.getcwd(),"path_to_my_project/common"))

os.environ['DJANGO_SETTINGS_MODULE'] = "project_name.settings"
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

私の開発サーバーでは正常に動作しますが、本番サーバーでは「choicesという名前のモジュールがありません」というエラーがスローされます。

manage.pyシェル

 import common
 print common
 <module 'common' from 'absolute_project_path/common/__init__.pyc'>

passenger_wsgi.py

import sys, os
sys.path.insert(0, os.getcwd())
sys.path.insert(0, os.path.join(os.getcwd(),"path_to_my_project"))
sys.path.insert(0, os.path.join(os.getcwd(),"path_to_my_project/common"))

os.environ['DJANGO_SETTINGS_MODULE'] = "project_name.settings"
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
 import common
 print common

 Outputs
 <module 'common' from 'absolute_project_path/common/__init__.pyc'>

何か案は?
ありがとう!

4

3 に答える 3

0

commonsys.path に他のパッケージ/モジュールがないことを確認してください。

import common
print common # or common.__file__

ではなく へのプロジェクトappendパスであるため、選択肢のない sys.path のインポート可能ファイルは失敗します。エラーが消えるかどうかを確認するために使用できます。sys.pathinsert(0, path)commoninsert

于 2012-05-06T06:59:12.170 に答える
0

wsgi.py から common を削除し、代わりに settings.py に追加します

OS のインポート
filedir = os.path.dirname(__file__)
sys.path.append(os.path.join(filedir))
sys.path.append(os.path.join(filedir, '共通'))
于 2012-05-06T20:56:24.747 に答える
0

プロジェクトがあるディレクトリを に追加しsys.pathます。

于 2012-05-06T06:33:25.907 に答える