答案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
任何用户的情况下运行root
,awssso
则运行该脚本的用户可能会正常工作。
获取全局 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