23

如何manage.py从 AWS EB (Elastic Beanstalk) Linux 实例运行?

如果我从“/opt/python/current/app”运行它,它会显示以下异常。

Traceback (most recent call last):
  File "./manage.py", line 8, in <module>
    from django.core.management import execute_from_command_line
ImportError: No module named django.core.management

我认为它与virtualenv有关。有什么提示吗?

4

4 回答 4

92

如何从 AWS Elastic Beanstalk AMI 运行 manage.py。

  • SSH 登录 Linux ( eb ssh)
    • (可选可能需要运行sudo su -以获得适当的权限)
  • source /opt/python/run/venv/bin/activate
  • source /opt/python/current/env
  • cd /opt/python/current/app
  • python manage.py <commands>

或者,您可以运行如下命令:

  • cd /opt/python/current/app
  • /opt/python/run/venv/bin/python manage.py <command>
于 2013-11-19T11:21:51.653 回答
10

随着新版本的 Python 路径似乎发生了变化。

  • 该应用程序位于 /var/app/current
  • 虚拟环境在 /var/app/venv/[KEY]

所以指令是:

  1. 使用 SSH 连接到机器eb shh
  2. 使用 ls 检查环境的路径/var/app/venv/。唯一的文件夹应该是[KEY]下一步
  3. 激活环境source /var/app/venv/[KEY]/bin/activate
  4. 执行命令python3 /var/app/current/manage.py <command>

当然亚马逊可以随时改变它。

于 2020-10-29T22:05:27.443 回答
2

TL;博士

此答案假定您已安装EB CLI。按着这些次序:

  1. 使用 ssh 连接到正在运行的实例。
eb ssh <environment-name>
  1. 进入环境后,加载环境变量(这对于数据库配置很重要)
. /opt/python/current/env

如果您希望可以使用printenv.

  1. 激活您的虚拟环境
source /opt/python/run/venv/bin/activate
  1. 导航到您的项目目录(这将取决于您的最新部署,因此请使用最新部署的编号而不是XX
cd /opt/python/bundle/XX/app/
  1. 运行你想要的命令:
python manage.py <command_name>

运行示例

假设您的环境名称是my-env,您的最新部署编号是13,并且您要运行shell命令:

eb ssh my-env # 1
. /opt/python/current/env # 2
source /opt/python/run/venv/bin/activate # 3
cd /opt/python/bundle/13/app/ # 4
python manage.py shell # 5
于 2019-11-21T18:54:08.800 回答
0

截至 2022 年 2 月,解决方案如下:

$ eb ssh
$ sudo su -
$ export $(cat /opt/elasticbeanstalk/deployment/env | xargs)
$ source /var/app/venv/*/bin/activate
$ python3 /var/app/current/manage.py <command name>

如果您有数据库连接,则需要 $ export $(cat /opt/elasticbeanstalk/deployment/env | xargs) 来导入您的环境变量(很可能您会这样做)

于 2022-02-09T07:31:20.270 回答