我已经阅读了很多类似的问题,并且我花了很多时间试图自己解决这个问题,但我仍然陷入困境。这是我的情况:
我正在浏览 Heroku 上的 Django 指南(https://devcenter.heroku.com/articles/django)。我最初是从 windows 开始的,但在遇到各种问题后,我决定切换到 linux 会容易得多。我擦了擦硬盘,并排安装了 Ubuntu 12.10 和 Win 7 以实现双启动。一切都已经用 pip 安装了(同样,遵循 Heroku 指南)。我正在使用 PostgreSQL,因为它(据说)与 Heroku 很好地集成了。在我开始尝试之前,这里是错误(它来自本教程的末尾):
(venv)wtodom@wubuntu:~/hellodjango$ python manage.py syncdb
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/wtodom/hellodjango/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/home/wtodom/hellodjango/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/wtodom/hellodjango/venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
self.execute(*args, **options.__dict__)
File "/home/wtodom/hellodjango/venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute
output = self.handle(*args, **options)
File "/home/wtodom/hellodjango/venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 371, in handle
return self.handle_noargs(**options)
File "/home/wtodom/hellodjango/venv/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 57, in handle_noargs
cursor = connection.cursor()
File "/home/wtodom/hellodjango/venv/local/lib/python2.7/site-packages/django/db/backends/dummy/base.py", line 15, in complain
raise ImproperlyConfigured("settings.DATABASES is improperly configured. "
django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.
如果我尝试使用其绝对路径指定设置文件以确保它使用正确的文件,我会得到:
(venv)wtodom@wubuntu:~/hellodjango$ python manage.py syncdb --settings=/home/wtodom/hellodjango/hellodjango/settings.py
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/wtodom/hellodjango/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/home/wtodom/hellodjango/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/wtodom/hellodjango/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 261, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/home/wtodom/hellodjango/venv/local/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 "/home/wtodom/hellodjango/venv/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/wtodom/hellodjango/venv/local/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 "/home/wtodom/hellodjango/venv/local/lib/python2.7/site-packages/django/core/management/sql.py", line 6, in <module>
from django.db import models
File "/home/wtodom/hellodjango/venv/local/lib/python2.7/site-packages/django/db/__init__.py", line 11, in <module>
if DEFAULT_DB_ALIAS not in settings.DATABASES:
File "/home/wtodom/hellodjango/venv/local/lib/python2.7/site-packages/django/utils/functional.py", line 184, in inner
self._setup()
File "/home/wtodom/hellodjango/venv/local/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "/home/wtodom/hellodjango/venv/local/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 '/home/wtodom/hellodjango/hellodjango/settings.py' (Is it on sys.path?): Import by filename is not supported.
许多类似的问题让人们编辑了错误的 settings.py 文件。我知道我编辑了正确的。这是它的一只猫(因为它有点长) - https://gist.github.com/wtodom/4736303。对于其中的数据,我已经尝试了所有我能想到的组合,包括空字符串——没有区别。
我读过的其他帖子有人对他们运行的 Django 版本有问题。我的是一个全新的安装,所以不是那样的。
有些人遇到了 Django 不在路上的问题。如果我从项目根目录打开一个 python shell,我可以导入东西,所以不是这样。
有些人的 settings.py 文件中没有值,但正如您从要点中看到的那样,我有。python manage.py syncdb
我还尝试在运行和不运行 pgadmin 并登录的情况下运行命令 ( )。
在那张纸条上,这里是一个 pgadmin 的屏幕截图,显示我已经创建了数据库:http: //i.imgur.com/CXD2AWo.png
这是我在 PostgreSQL 中 \l 时得到的结果(自从 SO 杀死格式后的另一个要点):https ://gist.github.com/wtodom/4736359
当我在这里时,这里有一个 \du 列表:https ://gist.github.com/wtodom/4736442
我确保我的 manage.py 包含os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hellodjango.settings")
在其中。
Heroku 教程中的所有内容都可以在 Ubuntu 中顺利运行,直到我尝试在本地同步数据库(python manage.py syncdb)。我可以通过 heroku 运行相同的命令,它工作正常(heroku run python manage.py syncdb
)。
我确定我可能忘记了我尝试或阅读过的相关内容。我花了大约 6 个小时阅读并试图让这件事继续下去,就在这个错误上。我真的不知道还能尝试什么。
另外,我对数据库和非 .NET Web 开发非常陌生(我从事过项目,但从未设置过),所以如果您知道我的设置有什么问题,请尽量弄清楚。非常感谢!