如何使用 cloud-init 和 CDK 在 Amazon Linux 2 上安装 python 3.9

How to install python 3.9 on Amazon Linux 2 with cloud-init and CDK

我正在尝试安装 Python 3.9 一个使用 Amazon Linux 的 EC2 实例。我尝试按照本指南进行操作:https://computingforgeeks.com/install-latest-python-on-centos-linux/,我能够安装 Python3.9 通过 SSH 输入和 运行 命令在 EC2 实例上手动运行。我现在正在尝试使用 UserData 脚本设置 EC2 实例,该脚本调用一些 CloudFormationInit 脚本来安装依赖项,包括 Python 3.9,但我的脚本失败了。

这是我用来安装 Python 3.9 的部分脚本:

    const installPythonString = `
#!/bin/bash
sudo amazon-linux-extras install -y epel
sudo yum -y update
sudo yum groupinstall "Development Tools" -y
sudo yum install openssl-devel libffi-devel bzip2-devel -y
gcc --version
sudo yum install wget -y
sudo mkdir -p /opt/python3.9/
sudo chown -R $USER:$USER /opt/python3.9/
wget https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tgz -P /opt/python3.9
cd /opt/python3.9/
tar xvf Python-3.9.9.tgz
whoami
sudo chown -R $USER:$USER Python-3.9.9
cd Python-3.9.9/
ls -al
pwd
./configure --enable-optimizations
sudo make altinstall
python3.9 --version
pip3.9 --version
`;
    init.addConfig('install_python39', new ec2.InitConfig([
      ec2.InitFile.fromString('/opt/install_python39.sh', installPythonString, {
        mode: '000755',
        owner: 'root',
        group: 'root',
      }),
      ec2.InitCommand.shellCommand('sudo sh install_python39.sh', {
        cwd: '/opt',
        key: 'install_python39',
      }),
]))

我在尝试启动 EC2 实例时遇到以下错误:

Python build finished successfully!
...
WARNING: The script pip3.9 is installed in '/usr/local/bin' which is not on PATH.
install_python39.sh: line 21: python3.9: command not found
install_python39.sh: line 22: pip3.9: command not found

是否有使用 CloudFormationInit 在 Amazon Linux 2 上安装 Python 3.9 的更简单方法?

看起来 python 的路径是 /urs/local/bin,它不在 $PATH 中,所以找不到 python3.9 命令。

运行 依次执行以下命令。

export PATH="/usr/local/bin:$PATH"echo "export PATH='/usr/local/bin:$PATH' >> ~/.bashrc(如果您这样做,请重新启动 ssh 会话)将其保存到 bashrc,这样您就不必在每次登录时都 运行 导出。

python3.9 --version

此外,如果您仍然遇到问题,请按照 this 安装 python3.9,这是我使用的,一切都很顺利。

如果您有 python 个软件包需要安装,我建议您创建一个 requirements.txt 并使用 pip3.9 install -r requirements.txt 安装它们。