[英]Python Script throwing TTY Sudo error when running SUDO Command
[英]package exists with `sudo python`, but not when running `python`
我正在AWS上配置机器。 当我在AWS公共云上(使用标准发行版的Ubuntu AMI)设置这台机器时,我能够成功sudo pip install -r REQUIREMENTS
在系统级python发行版中我需要的所有python包(例如Flask) :
[bash]$ python -c "import flask; print flask.__file__"
/usr/local/lib/python2.7/dist-packages/flask/__init__.pyc
[bash]$ python -c "import pprint, sys; pprint.pprint(sys.path)"
['',
'/usr/local/lib/python2.7/dist-packages/setuptools-20.2.2-py2.7.egg',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']
当我在私有Ubuntu AMI上使用相同的sudo pip install -r REQUIREMENTS
(无疑已经过调整以具有“更好的安全性”)时,这些软件包似乎安装得很好,但是当我从命令行运行python时,我得到了一个ImportError
。
[bash]$ python -c "import flask; print flask.__file__"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named flask
有趣的是,使用sudo运行命令会产生我在公共AWS帐户上获得的预期结果:
[bash]$ sudo python -c "import flask; print flask.__file__"
/usr/local/lib/python2.7/dist-packages/flask/__init__.pyc
运行python
和sudo python
时sys.path
相同,并且文件上都显示有/usr/local/lib/python2.7/dist-packages
:
[bash]$ python -c "import pprint, sys; pprint.pprint(sys.path)"
['',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']
[bash]$ sudo python -c "import pprint, sys; pprint.pprint(sys.path)"
['',
'/usr/local/lib/python2.7/dist-packages/setuptools-20.2.2-py2.7.egg',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']
这里的任何建议将非常受欢迎。 我以前从未见过这样的东西,而且在弄清楚此修改过的Ubuntu AMI的不同之处(可能引起问题)时遇到了麻烦。
/usr/local/lib/
在您的PATH中? 检查echo $PATH
。 如果不是,请通过以下SA线程添加它: https : //unix.stackexchange.com/questions/26047/how-to-correctly-add-a-path-to-path
事实证明/usr/local/lib/python2.7/dist-packages
目录没有a+r
访问权限。 结果,我们必须运行一些命令来解决问题:
# change permissions on the directories to read and execute, files to read
find /usr/local/lib/python2.7 -type d | xargs sudo chmod a+rx
find /usr/local/lib/python2.7 -type f | xargs sudo chmod a+r
这是一个非常奇怪的问题,我希望有人有一天会发现它有用(或者更好的是,首先不会遇到问题)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.