我正在尝试通过AWS elastic beanstalk部署我的django应用程序,我在过去的两天里遇到了一个问题,我已经进一步缩小了范围。
部署过程中的某个命令失败,此命令如下所示:
container_commands:
01_migrate:
command: "python3 manage.py migrate"
leader_only: trueAWS 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 ssh激活它,但没有成功,得到了这个消息
bash: opt/python/run/venv/bin/activate: No such file or directory当我检查opt目录时,这是因为缺少python文件夹,我不知道为什么虚拟环境不在那里/不能被激活,任何帮助都将不胜感激
编辑-目录结构:父目录- django微博

.ebextensions -

djangmicroblog -

djangoportfolio (本地虚拟文件夹)-

发布于 2020-06-22 19:12:40
事实证明,我的应用程序是为amazon linux 1和amazon linux 2的混合构建的,环境是amazon linux 2。
我不得不将我的环境降级到AL1 Python3.6,并将应用程序中的一些设置恢复为AL1 (例如wsgi path)
它现在已经启动并运行了:)
发布于 2020-06-20 04:41:14
试试这个:
container_commands:
01_migrate:
command: "/opt/python/run/venv/bin/python3 manage.py migrate"
leader_only: true不要想“激活它”,只需从venv运行python即可。
https://stackoverflow.com/questions/62476893
复制相似问题