如何运行Python脚本,该脚本是在AWS SSH会话中上传的应用程序的一部分?
作者:互联网
我正在尝试运行从开发机上作为我的AWS Elastic Beanstalk应用程序的一部分上传的Python脚本,但不知道如何操作.我相信我有located the script correctly,但是当我尝试在SSH下运行它时,出现导入错误.
例如,我有一个Flask-Migrate迁移脚本作为应用程序的一部分(与example in the documentation几乎相同),但是在使用SSH成功连接到我的EB实例后
> eb ssh
$sudo find / -name migrate.py
当我在其中找到它的目录(/ opt / python / current)中运行时
$python migrate.py db upgrade
在SSH提示符下,我得到
Traceback (most recent call last):
File "db_migrate.py", line 15, in <module>
from flask.ext.script import Manager
ImportError: No module named flask.ext.script
即使我的requirements.txt(以及我的其他文件在同一目录中)也带有flask-script == 2.0.5.
在Heroku上,我可以分两步完成所有这些操作
> heroku run bash
$python migrate.py db upgrade
AWS上是否有等效功能?如何运行Python脚本,该脚本是在AWS SSH会话中上传的应用程序的一部分?也许我错过了设置代码运行环境的步骤?
解决方法:
要迁移数据库,最好的方法是使用container_commands
,它们是每次部署应用程序时都会运行的命令. EBS documentation(步骤6)中有一个很好的例子:
container_commands:
01_syncdb:
command: "django-admin.py syncdb --noinput"
leader_only: true
出现ImportError的原因是因为EBS将软件包安装在virtualenv中.在使用SSH在应用程序中运行任意脚本之前,请先使用以下命令转到包含(最新)代码的目录
cd /opt/python/current
然后激活virtualenv
source /opt/python/run/venv/bin/activate
并设置环境变量(您的脚本可能期望的)
source /opt/python/current/env
标签:amazon-web-services,ssh,elastic-beanstalk,python 来源: https://codeday.me/bug/20191028/1954898.html