bash: / python / run / venv / bin / activate: нет такого файла или каталога - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь развернуть свое приложение django через AWS elasti c beanstalk, и последние 2 дня я столкнулся с проблемой, которую я сузил еще больше.

Команда в процессе развертывания дает сбой, эта команда выглядит следующим образом:

container_commands:
  01_migrate:
    command: "python3 manage.py migrate"
    leader_only: true

Раздел журналов консоли AWS EB, который сообщает мне об этом, отсылает меня к cfn-init.log, проверяя это говорит мне то же самое. Однако в cfn-init-cmd.log я вижу это

2020-06-19 18:24:24,753 P5019 [INFO] Command 01_migrate
2020-06-19 18:24:24,771 P5019 [INFO] -----------------------Command Output-----------------------
2020-06-19 18:24:24,771 P5019 [INFO]    Traceback (most recent call last):
2020-06-19 18:24:24,771 P5019 [INFO]      File "manage.py", line 10, in main
2020-06-19 18:24:24,771 P5019 [INFO]        from django.core.management import execute_from_command_line
2020-06-19 18:24:24,771 P5019 [INFO]    ModuleNotFoundError: No module named 'django'
2020-06-19 18:24:24,771 P5019 [INFO]
2020-06-19 18:24:24,771 P5019 [INFO]    The above exception was the direct cause of the following exception:
2020-06-19 18:24:24,771 P5019 [INFO]
2020-06-19 18:24:24,772 P5019 [INFO]    Traceback (most recent call last):
2020-06-19 18:24:24,772 P5019 [INFO]      File "manage.py", line 21, in <module>
2020-06-19 18:24:24,772 P5019 [INFO]        main()
2020-06-19 18:24:24,772 P5019 [INFO]      File "manage.py", line 16, in main
2020-06-19 18:24:24,772 P5019 [INFO]        ) from exc
2020-06-19 18:24:24,772 P5019 [INFO]    ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

, что наводит меня на мысль, что проблема в том, что моя виртуальная среда не активируется. Некоторые исследования в Интернете говорят мне, что команда для активации venv должна быть

opt/python/run/venv/bin/activate

Я пытался активировать это через eb s sh, но безуспешно, получил сообщение

bash: opt/python/run/venv/bin/activate: No such file or directory

когда я проверяю каталог opt, это подтверждается отсутствием папки python, я понятия не имею, почему виртуальный env отсутствует / не может быть активирован, и любая помощь будет принята с благодарностью

EDIT - структура каталогов: родительский каталог - django микроблог enter image description here

.ebextensions - enter image description here

djangmicroblog - enter image description here

djangoportfolio (локальная папка virtualenv) - enter image description here

Ответы [ 2 ]

1 голос
/ 22 июня 2020

Оказывается, мое приложение было создано для смеси amazon linux 1 и 2, и среда была amazon linux 2.

Мне пришлось понизить версию моей среды до AL1 python 3.6, и верните некоторые настройки в приложении к AL1 (например, путь wsgi)

Теперь оно запущено и работает :)

0 голосов
/ 19 июня 2020

Попробуйте следующее:

container_commands:
  01_migrate:
    command: "/opt/python/run/venv/bin/python3 manage.py migrate"
    leader_only: true

Не думайте о том, чтобы «активировать его», просто запустите python из вашего venv.

...