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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-18 12:19:50  来源:igfitidea点击:

ImportError: Could not import settings

pythondjango

提问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)