This question already has answers here:
Closed last year.
How to install python modules without root access?
(8个答案)
最终目标是在redhat机器上的shell脚本中运行这个命令。我已经在ubuntu机器上使用这个脚本很多年了,但是我在redhat上的权限更少。我将在下面描述我试图解决的问题,但我想先提出这个问题。
read -r val1 val2 val3 <<<$(python3 script_name.py "$json_args")

在redhat中,我不得不将python/pip3.5安装为sudo。。。这样地。。。
sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm
sudo yum -y install python35u
sudo yum -y install python35u-pip
sudo pip3.5 install --upgrade pip

sudo pip3.5 install boto3
sudo pip3.5 install awscli --upgrade --user

不同的机器可能有不同的python版本,因此我为.bash撸u profile中的python3创建了一个别名,这样相同的shell脚本就可以在任何地方工作。
echo 'alias python3="python3.5"' >>~/.bash_profile

现在。。。一切都是用python锁定的。。。我可以进口boto3,但它不可用。。。从python3命令行演示。。。
>>> import boto3
>>> boto3.__version__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'boto3' has no attribute '__version__'

所以我试着用“sudo”来运行python3,但是。。。
sudo: python3: command not found

所以我给bashrc添加了一个别名。。。
echo 'alias sudo="sudo "' >>~/.bashrc

伟大的!现在看来一切正常了!我终于可以运行我最初想要的命令(见下文)。
sudo python3 script_name.py args

或者更具体地说(注意与我的介绍相比增加了sudo)。。。
read -r val1 val2 val3 <<<$(sudo python3 script_name.py "$json_args")

从命令行工作得很好!
…直到我试着把它放到一个shell脚本中。现在我又回到原来的错误。。。
sudo: python3: command not found

我试过各种方法。。。将“sudo”别名放入脚本中。。。把它放在/root/.bashrc中。。。其他一些随机的事情。
在这一点上,我怀疑我也可以作为sudo运行bash脚本。。。但这会引起其他各种问题,我怀疑这是一个相当糟糕的安全措施。我觉得自己出轨了,这里有更聪明的解决方案。
有什么想法吗
如何在没有sudo的情况下运行python3.5并让它工作
如何让sudo python3在shell脚本中工作,而不将shell脚本作为sudo运行?
提前谢谢
编辑
根据@JulianLoaiza和@TerryCarmen下面的建议,chown -R允许我在没有sudo的情况下运行python3。。。但当我授权的时候boto3不能再授权我了。检查sys.path与python的视角只有一个不同。。。那是
sudo有:'/root/.local/lib/python3.5/site-packages'
w/out sudo有:'/home/ec2-user/.local/lib/python3.5/site-packages'
两者都有最后出现的'/usr/lib/python3.5/site-packages'(并且包含我显式安装的libs)。
可能发生的事情。。。/root/.local/lib/python3.5/site-packages里面没有关于awscli或boto的内容。。。/home/ec2-user/.local/lib/python3.5/site-packages里面有“awscli”和“botocore”的东西。/usr/lib/python3.5/site-packages也是。。。也有boto3和其他我明确输入的libs。
当我没有以“sudo”身份登录时,python是否会因为在/home/ec2-user/.local/lib/python3.5/site-packages之前查看/usr/lib/python3.5/site-packages而感到困惑?

最佳答案

您可以尝试更改文件夹所有权,

sudo chown -R ec2-user:ec2-user /usr/lib/python2.7
sudo chown -R ec2-user:ec2-user /usr/lib64/python2.7

关于linux - 须藤还是不须藤? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51850731/

10-16 11:24