2016-04-16 1 views
0

Я иногда пытался запустить python manage.py migrate во время работы над сайтом Aldryn в течение последних нескольких недель, и он никогда не работал. Это меня не очень беспокоило, но я думаю, что это, вероятно, должно (я совершенно новый для Django CMS и его способов, и я боюсь, что это укусит меня позже, если я не получу его сейчас). Вот результат я получаю при выполнении команды:Перенос миграции Manage.py никогда не работал в проекте Aldryn - не может быть хорошим, не так ли?

Joey-Keetons-Mac-Pro-2:fringeclass sparkholiday$ python manage.py migrate 
    /Users/sparkholiday/Documents/aldryn workspace folder/fringeclass/addons/aldryn- 
    django/aldryn_config.py:48: RuntimeWarning: no database configured. Falling back 
    to DATABASE_URL=sqlite:////Users/sparkholiday/Documents/aldryn workspace folder 
    /fringeclass/data/db.sqlite3 
     RuntimeWarning, 
    /Users/sparkholiday/Documents/aldryn workspace folder/fringeclass/addons/aldryn- 
    django/aldryn_config.py:56: RuntimeWarning: no cache configured. Falling back to 
    CACHE_URL=locmem:// 
     RuntimeWarning, 
    Traceback (most recent call last): 
     File "manage.py", line 7, in <module> 
     startup.manage(path=os.path.dirname(os.path.abspath(__file__))) 
     File "/Library/Python/2.7/site-packages/aldryn_django/startup.py", line 12, in 
    manage 
     utility.execute() 
    File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", l 
ine 302, in execute 
     settings.INSTALLED_APPS 
    File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 55, in 
__getattr__ 
    self._setup(name) 
    File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 43, in 
_setup 
    self._wrapped = Settings(settings_module) 
    File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 99, in 
__init__ 
    mod = importlib.import_module(self.SETTINGS_MODULE) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/i 
mportlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/Users/sparkholiday/Documents/aldryn workspace folder/fringeclass/settin 
gs.py", line 28, in <module> 
    aldryn_addons.settings.load(locals()) 
    File "/Library/Python/2.7/site-packages/aldryn_addons/settings.py", line 142, 
in load 
    settings_json_path=settings_json_path, 
    File "/Library/Python/2.7/site-packages/aldryn_addons/settings.py", line 174, 
in load_addon_settings 
    aldryn_config.Form().to_settings(addon_settings, settings) 
    File "/Users/sparkholiday/Documents/aldryn workspace folder/fringeclass/addons 
/aldryn-django/aldryn_config.py", line 123, in to_settings 
    self.server_settings(settings, env=env) 
    File "/Users/sparkholiday/Documents/aldryn workspace folder/fringeclass/addons 
/aldryn-django/aldryn_config.py", line 211, in server_settings 
    os.path.dirname(settings['NGINX_CONF_PATH']), 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpat 
h.py", line 122, in dirname 
     i = p.rfind('/') + 1 
AttributeError: 'NoneType' object has no attribute 'rfind' 

Я знаю, что NoneType ситуация в Python означает, что что-то называется, что не существует, или не правильно определены, и это, кажется, указывая к конфигурации NGINX здесь, но я не знаю, как это исправить. Кто-то в нищете в другом месте (не помню, где) предложил, чтобы кто-то исправил в основном ту же проблему, избавившись от сегмента кода, связанного с NGINX, но ... мне нужна эта вещь! Вот код, вокруг части в aldryn_config.py файл для aldryn-django (я не думаю, что кто-то хочет, чтобы я отправил весь файл, но я буду редактировать его, если это поможет):

def server_settings(self, settings, env): 
    settings['PORT'] = env('PORT', 80) 
    settings['BACKEND_PORT'] = env('BACKEND_PORT', 8000) 
    settings['ENABLE_NGINX'] = env('ENABLE_NGINX', False) 
    settings['ENABLE_PAGESPEED'] = env(
     'ENABLE_PAGESPEED', 
     env('PAGESPEED', False), 
    ) 
    settings['ENABLE_BROWSERCACHE'] = env(
     'ENABLE_BROWSERCACHE', 
     env('BROWSERCACHE', False), 
    ) 
    settings['BROWSERCACHE_MAX_AGE'] = env('BROWSERCACHE_MAX_AGE', 300) 
    settings['NGINX_CONF_PATH'] = env('NGINX_CONF_PATH') 
    settings['NGINX_PROCFILE_PATH'] = env('NGINX_PROCFILE_PATH') 
    settings['PAGESPEED_ADMIN_HTPASSWD_PATH'] = env(
     'PAGESPEED_ADMIN_HTPASSWD_PATH', 
     os.path.join(
      os.path.dirname(settings['NGINX_CONF_PATH']), 
      'pagespeed_admin.htpasswd', 
     ) 
    ) 
    settings['PAGESPEED_ADMIN_USER'] = env('PAGESPEED_ADMIN_USER') 
    settings['PAGESPEED_ADMIN_PASSWORD'] = env('PAGESPEED_ADMIN_PASSWORD') 
    settings['DJANGO_WEB_WORKERS'] = env('DJANGO_WEB_WORKERS', 3) 
    settings['DJANGO_WEB_MAX_REQUESTS'] = env('DJANGO_WEB_MAX_REQUESTS', 500) 
    settings['DJANGO_WEB_TIMEOUT'] = env('DJANGO_WEB_TIMEOUT', 120) 

И мой settings.py (потому что давайте сделаем это дольше, а?):

# -*- coding: utf-8 -*- 

INSTALLED_ADDONS = [ 
    # <INSTALLED_ADDONS> # Warning: text inside the INSTALLED_ADDONS tags is auto-generated. Manual changes will be overwritten. 
    'aldryn-addons', 
    'aldryn-django', 
    'aldryn-sso', 
    'aldryn-django-cms', 
    'aldryn-devsync', 
    'aldryn-background-image', 
    'aldryn-bootstrap3', 
    'aldryn-categories', 
    'aldryn-common', 
    'aldryn-disqus', 
    'aldryn-emailsettings', 
    'aldryn-faq', 
    'aldryn-forms', 
    'aldryn-gallery', 
    'aldryn-mailchimp', 
    'aldryn-newsblog', 
    'aldryn-people', 
    'aldryn-style', 
    'djangocms-fbcomments', 
    'reversion', 
    'aldryn_reversion', 
    'sortedm2m', 
    'taggit', 
    'filer', 
    'easy_thumbnails', 
    'djangocms_text_ckeditor', 
    'aldryn_translation_tools', 
    'aldryn_boilerplates', 

    # </INSTALLED_ADDONS> 
] 

import aldryn_addons.settings 
aldryn_addons.settings.load(locals()) 


# all django settings can be altered here 

INSTALLED_APPS.extend([ 
    # add you project specific apps here 
]) 

ALDRYN_BOILERPLATE_NAME='bootstrap3' 

TEMPLATE_CONTEXT_PROCESSORS.extend([ 

'aldryn_boilerplates.context_processors.boilerplate', 
    # add your template context processors here 
]) 

THUMBNAIL_PROCESSORS = (
    'easy_thumbnails.processors.colorspace', 
    'easy_thumbnails.processors.autocrop', 
    # 'easy_thumbnails.processors.scale_and_crop', 
    'filer.thumbnail_processors.scale_and_crop_with_subject_location', 
    'easy_thumbnails.processors.filters', 
    'easy_thumbnails.processors.background', 
) 

STATICFILES_FINDERS = [ 
'django.contrib.staticfiles.finders.FileSystemFinder', 
# important! place right before  django.contrib.staticfiles.finders.AppDirectoriesFinder 
'aldryn_boilerplates.staticfile_finders.AppDirectoriesFinder', 
'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
] 

MIDDLEWARE_CLASSES.extend([ 
    # add your own middlewares here 
]) 

TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader', 
'aldryn_boilerplates.template_loaders.AppDirectoriesLoader', 
'django.template.loaders.app_directories.Loader', 
'django.template.loaders.eggs.Loader' 
) 

Большое спасибо за прочтение этого - любые советы были бы замечательными! Я люблю редактирование интерфейса, но это не очень полезно, если вы не можете получить свой CSS! Я думаю, что я могу использовать git (git и docker работали без работы команды миграции, поэтому я так долго ее отключил), но у меня есть подозрение, что моя нехватка миграции вызывает проблемы с моей виртуальной средой , и это может со временем стать кошмаром:/

ответ

2

Похоже, вы используете python manage.py migrate с вашей локальной машины, а не изнутри контейнера докера.

Внутри контейнеров разные пути (например, исходный код равен /app), все необходимые требования установлены и база данных postgres связана и доступна.

Попробуйте вместо этого:

docker-compose run --rm web python manage.py migrate 

Что это делает:

  • docker-compose: эта команда выполняет операции Docker на основе конфигурации в docker-compose.yml файл в том же каталоге
  • run: создать и запустить новый контейнер
  • --rm: удалите контейнер на корме эр команда завершается (так как это команда разовый нет смысла держать его вокруг)
  • web: выбрать «web» сервис из docker-compose.yml
  • python manage.py migrate: команда для запуска в контексте контейнер

В качестве команды также можно запустить bash. Это даст вам интерактивную подсказку в контейнере.

+0

Я считаю это правильным: работа над командой за пределами контейнера была, безусловно, главной проблемой, но я все еще получаю эту ошибку (не включая весь вывод, но если больше поможет, я могу включить ее все в новом посте): 'Ваши модели имеют изменения, которые еще не отражены в миграции, и поэтому не будут применяться. Запустите «manage.py makemigrations», чтобы выполнить новые миграции, а затем повторно запустить «manage.py migrate», чтобы применить их. « Выполнение« makemigrations »работает, но« migrate »впоследствии дает ту же ошибку (возможно, мне следует nix «-rm» на makemigrations?) – sparkholiday

+0

то же самое происходит в моей среде – outmind

Смежные вопросы