모든 사용자가 Python 모듈을 사용할 수 있도록 만드는 방법

모든 사용자가 Python 모듈을 사용할 수 있도록 만드는 방법

AWS CLI를 Amazon Linux 2에 설치하는 스크립트가 있습니다(실제로 다양한 배포판이 있지만 저는 AL2를 사용하고 있습니다). 거의 모든 구성 요소가 설치된 것으로 보이지만 이미지를 캡처한 후 AWS 작업 공간에 배포하면 모든 구성 요소가 유지되지는 않습니다.

배포 후 모든 사용자(도메인 사용자 포함)가 모든 모듈을 사용할 수 있도록 하려면 어떻게 해야 합니까?

다음은 이 스크립트가 수행하는 작업에 대한 몇 가지 그림입니다.

여기에 이미지 설명을 입력하세요.

여기에 이미지 설명을 입력하세요.

여기에 이미지 설명을 입력하세요.

다음은 도메인 사용자를 사용하여 AWS Workspaces에 이미지를 배포할 때 발생하는 오류입니다.

여기에 이미지 설명을 입력하세요.

답변1

설치된 Python 모듈을 전역적으로 설치하려고 하지만 스크립트가 이를 수행하지 않습니다. 실제로 스크립트는 pip스크립트를 실행하는 사용자에 대해서만 모듈을 설치하도록 명시적으로 지시합니다.

python3 -m pip install --user boto3

스크립트를 실행하거나 사용자로 root사용하는 경우 sudo이러한 모듈은 해당 사용자에게만 설치되며 root시스템의 다른 사람은 액세스할 수 없습니다.

나중에 스크립트가 실행됩니다.

python3 -m pipx install aws-sso-util

pipx내가 읽은 바에 따르면 aws-sso-util격리된 환경에 설치되어 있습니다. 이는 최종 오류를 더 잘 설명합니다. /usr/local/bin/awssso전 세계적으로 사용할 수 있지만 사용자용 모듈 만 설치 pipx했습니다 . 사용자 없이 스크립트를 실행하면 스크립트 를 실행하는 사용자가 제대로 작동할 수 있습니다.boto3rootsudorootawssso

전역 Python 모듈을 얻는 한 가지 방법은 사용자를 사용하여 전역 위치에 새 가상 sudo환경을 만드는 것입니다 root.

sudo python3 -m venv /opt/aws-venv

이 사용자 세션의 나머지 부분에 대해 환경을 활성화합니다.

source /opt/aws-venv/bin/activate

가상 환경에 필요한 패키지를 설치합니다.

sudo /opt/aws-venv/bin/pip install lxml defusedxml boto3 botocore boto inquirerpy python-dateutil ensurepath aws-sso-util

이 새로운 가상 환경은 모든 사용자가 사용할 수 있어야 하며 다음을 통해 활성화할 수 있습니다.source /opt/aws-venv/bin/activate

관련 정보