我创建了一个简单的模块来存储我的所有选择并在我的应用程序中重用它们(请参阅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()
在我的开发服务器中,它工作正常,但在我的生产服务器中,它会抛出错误“没有模块命名选择”
manage.py shell
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'>
任何想法?
谢谢!
答案 0 :(得分:0)
将项目所在的目录添加到sys.path
。
答案 1 :(得分:0)
检查以确保sys.path中没有其他包/模块common
。
import common
print common # or common.__file__
您是append
项目路径sys.path
而不是insert(0, path)
,因此sys.path w / o选项中的可导入common
将失败。您可以使用insert
查看错误是否消失。
答案 2 :(得分:0)
从wsgi.py中删除common并将其添加到settings.py而不是
import os filedir = os.path.dirname(__file__) sys.path.append(os.path.join(filedir)) sys.path.append(os.path.join(filedir, 'common'))