Джанго: используя папку настроек;Ошибка импорта: невозможно импортировать имя «QUEUE_NAME» - PullRequest
0 голосов
/ 04 марта 2019

Я следую этой установке для этого проекта: https://github.com/IntelligentTrading/data

В проекте используется папка настроек, а не файл settings.py.(Это делает эту ошибку довольно уникальной по сравнению с файлом настроек, например, не найденным).Данные из settings / vendor_services_settings.py - это то, что нужно и вызывает ошибку.Команда переноса выглядит только в файле settings / local_settings.py.

Я приступил к миграции: (я нахожусь в virtualenv)

python manage.py migrate
INFO:settings:Deployment environment detected: LOCAL
INFO:settings:Importing vendor_services_settings
INFO:settings:LOCAL environment detected. Importing local_settings.py
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/home/cerulean/.virtualenvs/ITF/lib/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/home/cerulean/.virtualenvs/ITF/lib/python3.6/site-packages/django/core/management/__init__.py", line 357, in execute
    django.setup()
  File "/home/cerulean/.virtualenvs/ITF/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/cerulean/.virtualenvs/ITF/lib/python3.6/site-packages/django/apps/registry.py", line 112, in populate
    app_config.import_models()
  File "/home/cerulean/.virtualenvs/ITF/lib/python3.6/site-packages/django/apps/config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "/home/cerulean/.virtualenvs/ITF/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/cerulean/Code/data-sources/apps/indicator/models/__init__.py", line 5, in <module>
    from apps.indicator.models.events_elementary import EventsElementary
  File "/home/cerulean/Code/data-sources/apps/indicator/models/events_elementary.py", line 17, in <module>
    from apps.signal.models.signal import Signal
  File "/home/cerulean/Code/data-sources/apps/signal/models/__init__.py", line 1, in <module>
    from apps.signal.models.signal import Signal
  File "/home/cerulean/Code/data-sources/apps/signal/models/signal.py", line 15, in <module>
    from settings import QUEUE_NAME, AWS_OPTIONS, BETA_QUEUE_NAME, TEST_QUEUE_NAME, PERIODS_LIST
ImportError: cannot import name 'QUEUE_NAME'

В строке 21 файла /settings/local_settings.py говорится, что необходимо передать эти данные, если 'LOCAL ', вместо того, чтобы передавать необходимые данные, как это делают другие случаи в операторе if:

else: # LOCAL
     pass # see local_settings.py

Хотя в строке 28 настроек / init .py код, по-видимому, специально направленпрограмма для установки типа среды на локальный.

  dt_key = os.environ.get('DEPLOYMENT_TYPE', 'LOCAL')

Это похоже на то, что код из /settings/vendor_services_settings.py не хочет экспортировать свой код, потому что программа работает в локальной среде.Я попытался добавить код из этого файла vendor_service_settings.py в файл local_settings.py, который работает до того момента, когда программа, по-видимому, нуждается в реальных данных.

BUCKET_NAME = "intelligenttrading-s3-production"
    QUEUE_NAME = "intelligenttrading-sqs-production" # for production bot
    # DELAYED_QUEUE_NAME = "intelligenttrading-delayed-sqs-production"
    BETA_QUEUE_NAME = "intelligenttrading-sqs-beta" # for beta bot
    TEST_QUEUE_NAME = ""
    SNS_NAME = "intelligenttrading-sns-production"

«Перемещение» этого кода в файл local_settings.py заставляет миграцию работать временно, хотя опять-таки это не решение.Я предполагаю, что мой вопрос, как мне правильно импортировать данные между файлами в папке настроек в Django?

Я подумал о том, чтобы просто развернуть экземпляр Amazon Aurora DB, поскольку он может быть зарегистрирован как производственная среда.Хотя учебники позволят мне запустить тот же код переноса Python manage.py заранее, в любом случае.Будет ли иметь значение развертывание сервера?

...