AWS 运行 命令:Python 未找到
AWS Run Command : Python Not Found
我在我的实例中使用 Boto3 SSM 来执行 运行 命令。
当我 运行 简单命令(例如 echo hello world
或 mkdir abc
时,它工作正常并给出预期的输出。但是当我尝试 运行 python -V
或任何其他 python 命令时。输出为 python not found
。但是 python 在我的 EC2 实例中,它是 运行ning Ubuntu。当我手动检查时它工作正常。
代码:
ssm = boto3.client('ssm' )
commands = ['python -V']
ssm.send_command(DocumentName="AWS-RunShellScript", Parameters={'commands': commands}, InstanceIds=['i-xxxxxxxxxxx'])
boto3.ssm 并不意味着用作您的快速 shell 注入工具。您需要安装 ssm-agent to your linux instance 才能执行更高级的触发,反之亦然 windows。
使用 python3
有效。另外要提一下,它使用系统中的核心 python 并且不识别安装的任何其他版本。
此问题的正确答案取决于安装的 OS AMI。
对于这个问题,有几个选项可以解决这个问题:
- 使用
python3
因为python
(python 2.x) 没有安装。
- 安装 python 2.x (Ubuntu):
sudo apt-get install python
- 在
/usr/bin
目录下执行命令:sudo ln /usr/bin/python3 /usr/bin/python
到linkpython
到python3
亚马逊 Linux 2 安装了 Python 2.7.14。支持命令 "python"、"python2" 和 "python2.7"。 Python默认不安装3。
Ubuntu 16.04 64 位已安装 Python 3.5.2。支持命令 "python3" 和 "python3.5"。注意没有link到"python"。 Python默认不安装2。
我在亚马逊 Linux 2 和 Python 2.7 上注意到的一件商品。命令 python -V
将版本字符串写入 stderr,这会让您认为命令失败,因为 SSM 运行 命令实际成功时会显示如下输出。我发现 SSM 运行 命令只是在由 ----------ERROR-------
分隔的标准输出之后显示标准错误
----------ERROR-------
Python 2.7.14
Python 3 将版本字符串写入标准输出。这花了我几个小时才弄清楚,因为直到今天我才注意到 Python 2.x 的 stderr 问题。
有关我测试过的 AMI 的信息。
区域:us-west-2(俄勒冈)
亚马逊 Linux 2:
amzn2-ami-hvm-2.0.20180810-x86_64-gp2 (ami-6cd6f714)
Ubuntu 16.04 LTS:
ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-20180814 (ami-51537029)
我在我的实例中使用 Boto3 SSM 来执行 运行 命令。
当我 运行 简单命令(例如 echo hello world
或 mkdir abc
时,它工作正常并给出预期的输出。但是当我尝试 运行 python -V
或任何其他 python 命令时。输出为 python not found
。但是 python 在我的 EC2 实例中,它是 运行ning Ubuntu。当我手动检查时它工作正常。
代码:
ssm = boto3.client('ssm' )
commands = ['python -V']
ssm.send_command(DocumentName="AWS-RunShellScript", Parameters={'commands': commands}, InstanceIds=['i-xxxxxxxxxxx'])
boto3.ssm 并不意味着用作您的快速 shell 注入工具。您需要安装 ssm-agent to your linux instance 才能执行更高级的触发,反之亦然 windows。
使用 python3
有效。另外要提一下,它使用系统中的核心 python 并且不识别安装的任何其他版本。
此问题的正确答案取决于安装的 OS AMI。
对于这个问题,有几个选项可以解决这个问题:
- 使用
python3
因为python
(python 2.x) 没有安装。 - 安装 python 2.x (Ubuntu):
sudo apt-get install python
- 在
/usr/bin
目录下执行命令:sudo ln /usr/bin/python3 /usr/bin/python
到linkpython
到python3
亚马逊 Linux 2 安装了 Python 2.7.14。支持命令 "python"、"python2" 和 "python2.7"。 Python默认不安装3。
Ubuntu 16.04 64 位已安装 Python 3.5.2。支持命令 "python3" 和 "python3.5"。注意没有link到"python"。 Python默认不安装2。
我在亚马逊 Linux 2 和 Python 2.7 上注意到的一件商品。命令 python -V
将版本字符串写入 stderr,这会让您认为命令失败,因为 SSM 运行 命令实际成功时会显示如下输出。我发现 SSM 运行 命令只是在由 ----------ERROR-------
----------ERROR-------
Python 2.7.14
Python 3 将版本字符串写入标准输出。这花了我几个小时才弄清楚,因为直到今天我才注意到 Python 2.x 的 stderr 问题。
有关我测试过的 AMI 的信息。
区域:us-west-2(俄勒冈)
亚马逊 Linux 2: amzn2-ami-hvm-2.0.20180810-x86_64-gp2 (ami-6cd6f714)
Ubuntu 16.04 LTS: ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-20180814 (ami-51537029)