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()

在我的开发服务器中它工作正常,但在我的生产服务器中它抛出并错误“没有名为选择的模块”

管理.py 外壳

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

乘客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

从 wsgi.py 中删除 common 并将其添加到 settings.py

导入操作系统
文件目录 = os.path.dirname(__file__)
sys.path.append(os.path.join(filedir))
sys.path.append(os.path.join(filedir, 'common'))
于 2012-05-06T20:56:24.747 回答
0

将项目所在的目录添加到sys.path.

于 2012-05-06T06:33:25.907 回答
0

检查以确保您的 sys.path 中没有其他包/模块common

import common
print common # or common.__file__

您是append项目路径sys.path而不是insert(0, path),因此commonsys.path 中没有选择的可导入将失败。您可以使用insert来查看错误是否消失。

于 2012-05-06T06:59:12.170 回答