Python 导入错误:无法导入设置
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/12987648/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
ImportError: Could not import settings
提问by Dev
I am trying to develop an sample project in Django and getting errors when I run the syncdb command.
我正在尝试在 Django 中开发一个示例项目,但在运行 syncdb 命令时出现错误。
This is how my project structure looks like:
这是我的项目结构的样子:
/Users/django_demo/godjango/bookings:
/用户/django_demo/godjango/bookings:
manage.py
registration/
forms.py
views.py
models.py
urls.py
bookings/
settings.py
urls.py
And my manage.py file is as follows:
而我的 manage.py 文件如下:
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bookings.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
And my PYTHONPATH and DJANGO_SETTINGS_MODULE are set as below
我的 PYTHONPATH 和 DJANGO_SETTINGS_MODULE 设置如下
$echo $DJANGO_SETTINGS_MODULE
bookings.settings
$ echo $PYTHONPATH
/Users/django_demo/godjango/bookings
And my WSGI.py file looks like below:
我的 WSGI.py 文件如下所示:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bookings.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
When I run the python manage.py syncdb command, I am getting the following error.
当我运行 python manage.py syncdb 命令时,出现以下错误。
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_from_command_line(sys.argv)
File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 261, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 69, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 8, in <module>
from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/sql.py", line 6, in <module>
from django.db import models
File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/db/__init__.py", line 11, in <module>
if DEFAULT_DB_ALIAS not in settings.DATABASES:
File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/utils/functional.py", line 184, in inner
self._setup()
File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/conf/__init__.py", line 95, in __init__
raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'bookings.settings' (Is it on sys.path?): No module named unipath
Could someone suggest what I am missing?
有人可以建议我缺少什么吗?
采纳答案by Thomas Schw?rzl
The error says ImportError: Could not import settings 'bookings.settings' (Is it on sys.path?): No module named unipath
错误说 ImportError: Could not import settings 'bookings.settings' (Is it on sys.path?): No module named unipath
So, is your path /Users/django_demo/godjango/bookingswithin the python-sys.path?
那么,您的路径是否/Users/django_demo/godjango/bookings在 python-sys.path 中?
Check it in your shell with:
在你的 shell 中检查它:
$ python
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> for path in sys.path: print path
...
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/suds-0.4-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL-1.1.7-py2.7-macosx-10.6-intel.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/spyne-2.8.2_rc-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml-3.0alpha2-py2.7-macosx-10.6-intel.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pytz-2012d-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django_debug_toolbar-0.9.4-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django_social_auth-0.7.7-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/python_openid-2.2.5-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/oauth2-1.5.211-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django-1.4.1-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/httplib2-0.7.6-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
/Library/Python/2.7/site-packages
>>>
If not - you need to add it or simply move your bookingsapp into one of the paths represented in your sys.path
如果没有 - 您需要添加它或简单地将您的bookings应用程序移动到您的应用程序中表示的路径之一sys.path
回答by Daniel Roseman
The significant part of the traceback here is right at the very end. It says "No module named unipath". You've referred to that somewhere in your code, but you don't seem to have it in your project - it's not part of the standard library, so you'll need to install it somewhere that Python can see it.
这里回溯的重要部分就在最后。它说“没有名为 unipath 的模块”。您已经在代码中的某处引用了它,但您的项目中似乎没有它 - 它不是标准库的一部分,因此您需要将它安装在 Python 可以看到的地方。
回答by kta
Modify your wsgi.py file from
修改您的 wsgi.py 文件
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bookings.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
to
到
import os, sys
sys.path.append(' /Users/Sreek/django_demo/godjango/bookings')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bookings.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
回答by Chimo
Review hour /etc/apache2/httpd.conf file; you must include the WSGIPythonPath directive, to indicate the folder which contains your Django project (manage.py file), like:
小时查看/etc/apache2/httpd.conf文件;您必须包含 WSGIPythonPath 指令,以指示包含 Django 项目(manage.py 文件)的文件夹,例如:
WSGIPythonPath /home/user/Projects/Django/MyProject
WSGIPythonPath /home/user/Projects/Django/MyProject
also if you used some weird port in your VirtualHost, specify if for listening:
此外,如果您在 VirtualHost 中使用了一些奇怪的端口,请指定是否用于侦听:
Listen 90
听 90
Hope this helps somebody
希望这可以帮助某人
回答by cbron
ImportError: Could not import settings 'settings' (Is it on sys.path? Is there an import error in the settings file?): No module named setting
ImportError: Could not import settings 'settings' (Is it on sys.path? Is there an import error in the settings file?): No module named setting
In my case I was using __init__.pyto import other files and there was an error in it, so settings might actually exist but be flawed.
在我的情况下,我__init__.py用来导入其他文件并且其中有错误,因此设置可能确实存在但存在缺陷。
回答by user4212639
Alternatively, you can even pass the settings path at run time like so:
或者,您甚至可以在运行时传递设置路径,如下所示:
python manage.py syncdb --settings=bookings.settings --pythonpath=/Users/django_demo/godjango/bookings
This should override the environment variable (DJANGO_SETTINGS_MODULE)
这应该覆盖环境变量 (DJANGO_SETTINGS_MODULE)

