2017-04-20 12 views
4

Django 1.5.5から1.9、Django-cmsを2.4.3から3.3にアップグレードしています。Django-error: 'マイグレーションというモジュールはありません'

私は今、私は理解できないエラーにつまずく減価償却機能のすべてのエラーによって耕さなかったら:「NOモジュールという名前の移行」を

を(virtualenvの中で)実行しているとき、私はこのエラーを取得: - のrunserverのpython manage.pyとも私は を実行すると - のpythonが

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 

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) 
を移行manage.pyの

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" 
+0

あなたのvirtualenvにDjangoをアンインストールしてから再インストールしてみませんか? 'pip uninstall django && pip install django == 1.11'(またはあなたがアップグレードしているバージョン)。 – YPCrumble

+0

私はそれをしました....でも同じエラーです –

+0

正しいバージョンのDjangoを使用していることを確認してください。 「python -c」と入力するとdjango; print(django.get_version()) "がコンソールに表示されます。それは何を生み出すのですか?その後、仮想環境を有効にしてPythonのバージョンを確認します( 'python --version')。バージョンは何ですか?最後に、Djangoをアップグレードすると 'manage.py'もアップグレードされなかったでしょう - '#!/ usr/bin/env python'がそのファイルの最初の行であることを確認してください。 – YPCrumble

答えて

3

スクリプトが問題であるように思われます。あなたのマイグレーションを削除しようとしていますが、実際にはDjangoの/django/db/migrations/ファイルの内容も削除しています。明示的には__init__.pyファイルは削除されませんが、他のファイルは削除されます。

1つのオプションは、これらの行を削除するだけです:あなたは、移行にカスタムコードを追加したい場合がありますので

echo ">> Deleting old migrations" 
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete 
find . -path "*/migrations/*.pyc" -delete 

は、あなたが生産上ジャンゴを実行している、とにかく一度古い移行を削除すべきではありません。これは、開発のための便利なスクリプトのように見えます。

関連する問題