我正在将我的Django App从Django 1.5.5 tot 1.9升级,Django-cms从2.4.3升级到3.3(以及所有相应的软件包).
在我仔细研究了折旧函数的所有错误之后,我现在偶然发现了一个我无法理解的错误:'没有名为migration的模块'
我在运行时遇到这个错误(在virtualenv中): - python manage.py runserver以及运行时 - python manage.py migrate
Traceback (most recent call last):
File "manage.py", line 20, in <module>
execute_from_command_line(sys.argv)
File "/var/www/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 350, in execute_from_command_line
utility.execute()
File "/var/www/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 342, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/var/www/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 195, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/var/www/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 39, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/var/www/env/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 16, in <module>
from django.db.migrations.autodetector import MigrationAutodetector
File "/var/www/env/local/lib/python2.7/site-packages/django/db/migrations/__init__.py", line 1, in <module>
from .migration import Migration, swappable_dependency # NOQA
ImportError: No module named migration
Run Code Online (Sandbox Code Playgroud)
manage.py
#!/usr/bin/env python2
import os
import sys
if __name__ == "__main__":
settings_module_path = 'ais.settings.production'
########## Attempt to override settings using local settings
try:
from ais.settings.local_settings import *
# For developmentent, file will probably hold the following:
settings_module_path = 'ais.settings.development'
print "!!!manage.py settings overwritten!!!"
except ImportError:
pass
os.environ['DJANGO_SETTINGS_MODULE'] = settings_module_path
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
Run Code Online (Sandbox Code Playgroud)
migrate.sh
#!/bin/sh
echo "Starting ..."
echo ">> Deleting old migrations"
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
# Optional
echo ">> Deleting sqlite (if exists) database"
find . -name "db.sqlite3" -delete
echo ">> Running manage.py makemigrations"
python manage.py makemigrations
echo ">> Running manage.py migrate"
python manage.py migrate
echo ">> Done"
Run Code Online (Sandbox Code Playgroud)
YPC*_*ble 16
您的脚本似乎是问题所在.它试图删除您的迁移,但它实际上也删除了Django /django/db/migrations/文件的内容.请注意,它显式不会删除__init__.py文件,但会删除其他文件.
一种选择就是删除这些行:
echo ">> Deleting old migrations"
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
Run Code Online (Sandbox Code Playgroud)
一旦你在生产中运行Django,你不应该删除旧的迁移,因为你可能想要为迁移添加自定义代码.这看起来像是开发的便利脚本.
Tar*_*rma 16
如果您的错误仍然如下:
from .migration import Migration, swappable_dependency # NOQA
ImportError: No module named 'django.db.migrations.migration'
Run Code Online (Sandbox Code Playgroud)
你需要重新安装dajngo
检查Django版本,然后强制重新安装它
python -m django --version
Run Code Online (Sandbox Code Playgroud)
pip install --upgrade --force-reinstall包
pip install --upgrade --force-reinstall Django==2.0.5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11710 次 |
| 最近记录: |