奇怪的Python行为就像sudo(Ubuntu)

2024-06-16 10:44:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用pythonicode时遇到了问题,所以我在/usr/local/bin/python上重新安装了python,并使用了“-enable unicode=ucs4”选项。我把python模块的所有路径都添加到~/.bashrc中,当我以普通用户身份运行时,我可以导入模块,但当我以sudo的身份运行时,我无法导入模块

iury@buzios:~$ /usr/local/bin/python
Python 2.7.6 (default, Aug 20 2015, 11:57:25) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>>  
iury@buzios:~$ sudo /usr/local/bin/python
Python 2.7.6 (default, Aug 20 2015, 11:57:25) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named numpy
>>> 

Tags: 模块numpydefaultbinonusrlocaltype
1条回答
网友
1楼 · 发布于 2024-06-16 10:44:32

正如其名称所示,环境变量被分配给您自己的用户。这意味着,如果您以root用户身份运行程序(使用sudo),则不会将它们“分配”给程序,因为它是在root用户的环境中运行的。一种解决方法是在sudo命令之后设置环境变量:sudo env PATH=$PATH VAR1=SOME_VALUE VAR2=SOME_VALUE

正如this问题中的答案所示,您可以将此导出添加到您的./bashrc中作为解决方法:

alias sudo='sudo env PYTHONPATH=[PATH] PYTHON=[OTHERPATH] ... ./thescript.py

另外,正如注释中提到的,请确保您需要以sudo的形式运行python,因为在不真正需要的情况下,不建议使用它。在

相关问题 更多 >