刚刚安装了 Django 1.9,并尝试升级我的 1.8 应用程序。在尝试仔细遵循发行说明后,我仍然得到以下跟踪(见下文)。
我认为这与迁移有关,但清空迁移文件夹没有任何效果。
有人能指出我所缺少内容的链接吗?
Performing system checks...
System check identified no issues (0 silenced).
Unhandled exception in thread started by <function wrapper at 0x9757454>
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/django/utils/autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/runserver.py", line 124, in inner_run
self.check_migrations()
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 448, in check_migrations
executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 20, in __init__
self.loader = MigrationLoader(self.connection)
File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/loader.py", line 52, in __init__
self.build_graph()
File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/loader.py", line 197, in build_graph
self.load_disk()
File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/loader.py", line 115, in load_disk
app_config.label,
TypeError: object.__new__() takes no parameters
答案1
我找到了解决方案。
我安装了 South,其中包含旧版本的 Migrate 类。它不是 INSTALLED_APP settings.py。但是,我确实安装了 django-extensions。这个旧版本引用了 South,它引入了 South 版本的 Migrate,而不是新的 django 版本。
解决方案是“sudo pip uninstall south”和“sudo pip install django-extensions --upgrade”。
全部修复。
诀窍是使用“inspect”模块打印出 loader.py 中失败的类和父类的文件名:
import inspect
print( '****', inspect.getfile(migration_module.Migration) )
print( '********', inspect.getfile(inspect.getmro(migration_module.Migration)[1]) )
这很快就表明 loader.py 获取了错误版本的 Migrate。