2017-09-01 86 views
1

我試圖用Python 2.7.11將Django從1.10.7升級到1.11.4。我運行了pip install Django -Upython -c "import django; print django.get_version()"確認安裝了Django 1.11.4。但是,當我然後去運行測試時,我得到ImportError: No module named notmigrations。有人有建議嗎?升級到Django 1.11.4 ImportError

以下是完整的堆棧跟蹤:

Traceback (most recent call last): 
    File "./manage.py", line 25, in <module> 
    execute_from_command_line(sys.argv) 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line 
    utility.execute() 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/core/management/__init__.py", line 355, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/core/management/commands/test.py", line 29, in run_from_argv 
    super(Command, self).run_from_argv(argv) 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/core/management/base.py", line 283, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/core/management/base.py", line 330, in execute 
    output = self.handle(*args, **options) 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/core/management/commands/test.py", line 62, in handle 
    failures = test_runner.run_tests(test_labels) 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/test/runner.py", line 601, in run_tests 
    old_config = self.setup_databases() 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/test/runner.py", line 546, in setup_databases 
    self.parallel, **kwargs 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/test/utils.py", line 187, in setup_databases 
    serialize=connection.settings_dict.get('TEST', {}).get('SERIALIZE', True), 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/db/backends/base/creation.py", line 69, in create_test_db 
    run_syncdb=True, 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/core/management/__init__.py", line 130, in call_command 
    return command.execute(*args, **defaults) 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/core/management/base.py", line 330, in execute 
    output = self.handle(*args, **options) 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 83, in handle 
    executor = MigrationExecutor(connection, self.migration_progress_callback) 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/db/migrations/executor.py", line 20, in __init__ 
    self.loader = MigrationLoader(self.connection) 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/db/migrations/loader.py", line 52, in __init__ 
    self.build_graph() 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/db/migrations/loader.py", line 203, in build_graph 
    self.load_disk() 
    File "/home/vagrant/.virtualenvs/rhw/lib/python2.7/site-packages/django/db/migrations/loader.py", line 82, in load_disk 
    module = import_module(module_name) 
    File "/usr/local/lib/python2.7.11/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
ImportError: No module named notmigrations 
+0

你用遷移命令? – Mattia

回答

3

它看起來像你在你MIGRATION_MODULES設置使用notmigrations禁用遷移(如this post描述)。

在Django 1.9+中,您應該簡單地使用None而不是像'notmigrations'release notes)這樣的假模塊名稱。

+0

謝謝,但那只是中途。我在我的設置中找到了'MIGRATION_MODULES = DisableMigrations()'行,並將其更改爲'MIGRATION_MODULES = None',現在它給了我'TypeError:'NoneType'類型的參數不可迭代' – panatale1

+0

我沒有說要設置'MIGRATION_MODULES = None',我說要用'None'替換''notmigrations''。編輯你的'DisableMigrations'類來返回'None'而不是''notmigrations''。 – Alasdair

+0

經過一個假期,然後不得不趕上趕上,我終於做到了這一點,它的工作。謝謝!! – panatale1

1

Django的2.0,我創建的設置文件描述here與內容,如:

from settings import * 

class DisableMigrations(object): 
    def __contains__(self, item): 
     return True 

    def __getitem__(self, item): 
     return None 

MIGRATION_MODULES = DisableMigrations() 

和運行我的測試測試新創建的設置