Подтвердить что ты не робот

Django-admin.py и путь python на EC2 Amazon Beanstalk

Я развернул приложение django на Elastic Benastalk, но мои команды не работают, и я думаю, что проблема в том, что django-admin.py не находится в $PYTHONPATH, я хотел бы добавить мое приложение в путь python, но я не знаю, каков точный путь к экземпляру EC2. На самом деле я нашел его под: /opt/python/bundle/3/app (я использовал команду "найти" через SSH)... но это фиксированный и надежный путь? ps: WTF - это "3"?? (наверняка не версия или количество моих разворачиваний ^ _ ^)

UPDATE:

если я cd до /opt/python/bundle/3/app/myappname и выполните:

python manage.py shell

Я получаю:

  File "manage.py", line 3, in <module>
    from django.core.management import execute_from_command_line
ImportError: No module named django.core.management

РЕШИТЬ!

Amazon Beanstalk использует virtualenv (как и я сам локально), чтобы активировать его, вы должны:

source /opt/python/run/venv/bin/activate
cd /opt/python/current/app
python manage.py commandname

НО, чтобы использовать пользовательские команды управления (поэтому мне нужно получить доступ к оболочке django на моем экземпляре EC2), вам нужно добавить приложение в путь python, а также все переменные среды, используемые вашим приложением, поэтому я сделал:

vi /home/ec2-user/.bash_profile

и добавил:

export PYTHONPATH=$PYTHONPATH:/opt/python/current/app

и мои переменные env... теперь это работает!:)

Чтобы автоматически активировать virtualenv и иметь возможность использовать оболочку django, как только регистрируется через ssh, можно добавить:

source /opt/python/run/venv/bin/activate
cd /opt/python/current/app

в .bash_profile:)

4b9b3361

Ответ 1

Сообщение:

  File "manage.py", line 3, in <module>
    from django.core.management import execute_from_command_line
ImportError: No module named django.core.management

не потому, что ваше приложение не находится в PYTHONPATH, а потому, что оно вообще не может найти ваше приложение django. Значение вашего каталога сайтов-пакетов не в PYTHONPATH.

Попробуйте найти каталог сайтов-пакетов на вашем сервере, и это должно быть в PYTHONPATH. Я не использовал приложение python с Elastic Beanstalk, но я считаю, что он может использовать виртуальную среду python. В этом случае перед запуском python ./manage shell

вам необходимо настроить свою виртуальную среду,

Ответ 2

Вы можете добавить option_name, если вам нужно изменить PYTHONPATH или установить любую переменную среды в целом.

В вашем файле .ebextensions/myapp-env.config (или независимо от вашего имени *.config):

option_settings:
  - option_name: PYTHONPATH
    value: /opt/python/ondeck/app/myapp:$PYTHONPATH