Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何在 AL2 或 AL2023 上创建一个包含 Boto 3 库的 Python 3 虚拟环境?
我有一个在 Amazon Linux 2 (AL2) 或 Amazon Linux 2023 (AL2023) 上运行的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。我想在我的实例上创建一个包含适用于 Python 的 AWS SDK (Boto3) 的独立 Python 3 虚拟环境。
解决方法
安装 Python 3
完成以下步骤:
-
要刷新软件包索引,请运行以下命令:
yum check-update**注意:**上述命令还会查找可用的更新。您无需更新其他软件包即可创建 Python 3 环境。
-
要确定您的主机是否已安装 Python 3,请运行以下命令:
[ec2-user ~]$ yum list installed | grep -i python3如果未安装 Python 3,则您会收到以下输出:
[ec2-user ~]$ yum list installed | grep -i python3 [ec2-user ~]$ python3 -bash: python3: command not found如果已安装 Python 3,则根据您的发行版,您会收到以下输出:
AL2:[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.gzAL2023:
[ec2-user ~]$ yum list installed | grep -i python3 python3.x86_64 3.9.21-1.amzn2023.0.3 @System python3-pip-wheel.noarch 21.3.1-2.amzn2023.0.11 @System python3-libs.x86_64 3.9.21-1.amzn2023.0.3 @System python3-setuptools.noarch 59.6.0-2.amzn2023.0.5 @System [ec2-user ~]$ whereis python3 python3: /usr/bin/python3 /usr/share/man/man1/python3.1.gz -
如果未安装 Python 3,请运行以下命令,以使用 yum 软件包管理器安装该软件包:
[ec2-user ~]$ sudo yum install python3 -y
在 ec2-user 主目录下创建虚拟环境
要创建内含虚拟环境的应用程序目录,请运行以下命令:
[ec2-user ~]$ python3 -m venv my_app/env
**注意:**请将 my_app 替换为您的应用程序目录名称。
激活虚拟环境并安装 Boto3 库
完成以下步骤:
-
将 AWS Identity and Access Management (IAM) 角色附加到您的实例。该角色必须拥有允许适用于 Python 的 SDK (Boto3) 执行您的配置所需操作的权限策略。有关其他身份验证方法,请参阅 Boto3 网站上的 Configuration(配置)。
-
要激活环境,请运行以下命令:
[ec2-user ~]$ source ~/my_app/env/bin/activate (env) [ec2-user ~]$**注意:**请将 my_app 替换为您的应用程序目录名称。
-
要确保您的环境安装了最新的 pip 模块,请运行以下命令:
(env) [ec2-user ~]$ pip install pip --upgrade -
要在虚拟环境中安装 Boto3 库,请运行以下命令:
(env) [ec2-user ~]$ pip install boto3 -
要运行 Python,请运行以下命令:
(env) [ec2-user ~]$ python Python 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. >>>> -
要导入 Boto3 库并确认其正常运行,请运行以下命令:
>>> import boto3 # no error以下示例输出列出了 AWS 账户中的所有 Amazon Simple Storage Service (Amazon S3) 存储桶:
>>> import boto3 # no error >>> s3 = boto3.resource('s3') >>> for bucket in s3.buckets.all(): ... print(bucket.name) ... # Press Enter twice to execute the loop >>> exit() # Then type exit() to quit Python shell -
要退出虚拟环境,请运行以下命令:
(env) [ec2-user ~]$ deactivate [ec2-user ~]$ -
要在登录时自动激活虚拟环境,请运行以下命令更新 ~/.bashrc 文件:
[ec2-user ~]$ echo "source ${HOME}/my_app/env/bin/activate" >> ${HOME}/.bashrc**注意:**请将 my_app 替换为您的应用程序目录名称。上述命令会自动激活您的虚拟环境。
-
要重新加载环境的 bash 环境,请运行以下命令:
[ec2-user ~]$ source ~/.bashrc输出示例:
(env) [ec2-user ~]$注意:****(env) 表明您已正确激活虚拟环境。现在,在所有后续 SSH 会话中以及运行 source ~/bashrc 命令时,您都可以默认使用此 Python 环境。
相关信息
Update instance software on your AL2 instance(更新 AL2 实例上的实例软件)
Python Packaging Authority (PyPA) 网站上的 Virtualenv
