如何使 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,但您boto3仅为root用户安装了该模块。如果您的脚本在没有sudo任何用户的情况下运行rootawssso则运行该脚本的用户可能会正常工作。

获取全局 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

相关内容