我如何 运行 作为我在 AWS SSH 会话中上传的应用程序的一部分的 Python 脚本?
How do I run a Python script that is part of an application I uploaded in an AWS SSH session?
我正在尝试 运行 Python 我从我的开发机器上传的脚本作为我的 AWS Elastic Beanstalk 应用程序的一部分,但不知道如何操作。我相信我已经 ,但是当我尝试在 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 上是否有等效的功能?我如何 运行 作为我在 AWS SSH 会话中上传的应用程序的一部分的 Python 脚本?也许我缺少设置代码 运行s?
的环境的步骤
要迁移数据库,最好使用 container_commands
, they are commands that will run every time you deploy your application. There is a good example in the EBS documentation(第 6 步):
container_commands:
01_syncdb:
command: "django-admin.py syncdb --noinput"
leader_only: true
您得到 ImportError
的原因是因为 EBS 将您的包安装在 virtualenv 中。在 SSH 应用程序中 运行 任意脚本之前,首先使用
切换到包含您的(最新)代码的目录
cd /opt/python/current
然后激活虚拟环境
source /opt/python/run/venv/bin/activate
并设置环境变量(您的脚本可能需要)
source /opt/python/current/env
我正在尝试 运行 Python 我从我的开发机器上传的脚本作为我的 AWS Elastic Beanstalk 应用程序的一部分,但不知道如何操作。我相信我已经
例如,我有一个 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 上是否有等效的功能?我如何 运行 作为我在 AWS SSH 会话中上传的应用程序的一部分的 Python 脚本?也许我缺少设置代码 运行s?
的环境的步骤要迁移数据库,最好使用 container_commands
, they are commands that will run every time you deploy your application. There is a good example in the EBS documentation(第 6 步):
container_commands:
01_syncdb:
command: "django-admin.py syncdb --noinput"
leader_only: true
您得到 ImportError
的原因是因为 EBS 将您的包安装在 virtualenv 中。在 SSH 应用程序中 运行 任意脚本之前,首先使用
cd /opt/python/current
然后激活虚拟环境
source /opt/python/run/venv/bin/activate
并设置环境变量(您的脚本可能需要)
source /opt/python/current/env