我有一个在 Amazon Linux 2 上运行的 Amazon Elastic Compute Cloud(Amazon EC2)实例。我想在我的实例上创建一个包含 Boto 3 库的独立 Python 3 虚拟环境。
解决方法
安装适用于 Amazon Linux 2 的 Python 3
-
使用 SSH 连接到您的 EC2 Linux 实例。有关更多信息,请参阅使用 SSH 从 Linux 或 macOS 连接到 Linux 实例。
-
执行 yum check-update 以刷新包索引。check-update 还会查找可用的更新。您无需更新其他包即可创建 Python 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
-
如果未安装 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
-
使用权限策略将 AWS Identity and Access Management(IAM)角色附加到您的 EC2 实例,以便 Boto 3 可以与 AWS API 交互。有关其他身份验证方法,请参阅 Boto 3 文档。
-
如需激活环境,请在您的项目目录下的 bin 目录中获取 activate 文件:
[ec2-user ~]$ source ~/my_app/env/bin/activate(env) [ec2-user ~]$
-
确保您的环境安装了最新的 pip 模块:
(env) [ec2-user ~]$ pip install pip --upgrade
-
如需在虚拟环境中安装 Boto 3 库,请使用 pip 命令:
(env) [ec2-user ~]$ pip install boto3
-
运行 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.
>>>>
-
导入 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()
-
要退出虚拟环境,请运行 deactivate 命令:
(env) [ec2-user ~]$ deactivate
[ec2-user ~]$
-
要在您登录时自动激活虚拟环境,请将其添加到 ~/.bashrc 文件中:
[ec2-user ~]$ echo "source ${HOME}/my_app/env/bin/activate" >> ${HOME}/.bashrc
-
从主目录中获取 ~/.bashrc 文件,以重新加载您的环境的 bash 环境。这会自动激活您的虚拟环境。提示反映了更改(env)。此更改也会应用于将来的任何 SSH 会话:
[ec2-user ~]$ source ~/.bashrc
(env) [ec2-user ~]$
相关信息
更新 Amazon Linux 实例上的实例软件
使用启动实例向导启动实例
Python Packaging Authority(PYPA)网站上的 Virtualenv