如何在 Amazon Linux 2 上创建一个包含 Boto 3 库的 Python 3 虚拟环境?

2 分钟阅读
0

我有一个在 Amazon Linux 2 上运行的 Amazon Elastic Compute Cloud(Amazon EC2)实例。我想在我的实例上创建一个包含 Boto 3 库的独立 Python 3 虚拟环境。

解决方法

安装适用于 Amazon Linux 2 的 Python 3

  1. 使用 SSH 连接到您的 EC2 Linux 实例。有关更多信息,请参阅使用 SSH 从 Linux 或 macOS 连接到 Linux 实例

  2. 执行 yum check-update 以刷新包索引。check-update 还会查找可用的更新。您无需更新其他包即可创建 Python 3 环境。

  3. 要确定您的主机是否安装了 Python 3,请运行 list installed:>

    [ec2-user ~]$ yum list installed | grep -i python3

    如果未安装 Python 3,则会得到下面的输出:

    [ec2-user ~]$ yum list installed | grep -i python3[ec2-user ~]$
    
    [ec2-user ~]$ python3
    -bash: python3: command not found

    如果安装了 Python 3,则会得到下面的输出:

    [ec2-user ~]$ yum list installed | grep -i python3
    python3.x86_64                        3.7.4-1.amzn2.0.4              @amzn2-core
    python3-libs.x86_64                   3.7.4-1.amzn2.0.4              @amzn2-core
    python3-pip.noarch                    9.0.3-1.amzn2.0.1              @amzn2-core
    python3-setuptools.noarch             38.4.0-3.amzn2.0.6             @amzn2-core
    
    [ec2-user ~]$ whereis python3
    python3: //usr/bin/python3 /usr/bin/python3.7 /usr/bin/python3.7m /usr/lib/python3.7 /usr/lib64/python3.7 /usr/include/python3.7m /usr/share/man/man1/python3.1.gz
  4. 如果未安装 Python 3,则使用 yum 包管理器安装包:

    [ec2-user ~]$ sudo yum install python3 -y

在 ec2-user 主目录下创建虚拟环境

以下命令会创建内含虚拟环境的应用程序目录。您可以将 my_app 更改为其他名称。如果您更改了 my_app,请在其余解决步骤中引用新名称:

[ec2-user ~]$ python3 -m venv my_app/env

激活虚拟环境并安装 Boto 3

  1. 使用权限策略AWS Identity and Access Management(IAM)角色附加到您的 EC2 实例,以便 Boto 3 可以与 AWS API 交互。有关其他身份验证方法,请参阅 Boto 3 文档

  2. 如需激活环境,请在您的项目目录下的 bin 目录中获取 activate 文件:

    [ec2-user ~]$ source ~/my_app/env/bin/activate(env) [ec2-user ~]$
  3. 确保您的环境安装了最新的 pip 模块:

    (env) [ec2-user ~]$ pip install pip --upgrade
  4. 如需在虚拟环境中安装 Boto 3 库,请使用 pip 命令:

    (env) [ec2-user ~]$ pip install boto3
  5. 运行 Python:

    (env) [ec2-user ~]$ pythonPython 3.7.4 (default, Dec 13 2019, 01:02:18)
    [GCC 7.3.1 20180712 (Red Hat 7.3.1-6)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>>
  6. 导入 Boto 3 库,然后验证它是否有效。此步骤需要您配置步骤 1 中的权限策略。以下示例输出列出了账户中的所有 Amazon Simple Storage Service(Amazon S3)存储桶:

    >>> import boto3           # no error>>> s3 = boto3.resource('s3')
    >>> for bucket in s3.buckets.all():
    print(bucket.name)
    >>> exit()
  7. 要退出虚拟环境,请运行 deactivate 命令:

    (env) [ec2-user ~]$ deactivate
    [ec2-user ~]$
  8. 要在您登录时自动激活虚拟环境,请将其添加到 ~/.bashrc 文件中:

    [ec2-user ~]$ echo "source ${HOME}/my_app/env/bin/activate" >> ${HOME}/.bashrc
  9. 从主目录中获取 ~/.bashrc 文件,以重新加载您的环境的 bash 环境。这会自动激活您的虚拟环境。提示反映了更改(env)。此更改也会应用于将来的任何 SSH 会话:

    [ec2-user ~]$ source ~/.bashrc
    (env) [ec2-user ~]$

相关信息

更新 Amazon Linux 实例上的实例软件

使用启动实例向导启动实例

Python Packaging Authority(PYPA)网站上的 Virtualenv

AWS 官方
AWS 官方已更新 8 个月前