奇怪的PYTHONPATH行为为sudo(Ubuntu)

时间:2015-08-20 17:05:50

标签: python ubuntu pythonpath

我遇到了关于python unicode的麻烦,所以我在/ usr / local / bin / python上重新安装了python,选项为“--enable-unicode = ucs4”。我向〜/ .bashrc添加了python模块的所有路径,当我作为普通用户运行时,我能够导入模块,但是当我像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
>>> 

1 个答案:

答案 0 :(得分:1)

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

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

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

另外,如评论中所述,请确保您需要将python作为sudo运行,因为在不需要时不建议使用。