我具有在 Amazon Linux 2 上執行的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。我想在執行個體上使用 Boto 3 程式庫建立隔離的 Python 3 虛擬環境。
解決方法
安裝 Python 3 for Amazon Linux 2
-
使用 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 使用者主目錄下建立虛擬環境
下列命令會建立在其內部具有虛擬環境的應用程式目錄。您可以將 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