有时候我们需要使用root权限来执行某些python程序。同时即使我们自己在.bashrc
或其他类似的配置文件中定义了PYTHONPATH
或者PATH
路径的话,也会出现import路径不存在的错误。这是因为在使用sudo模式执行程序的时候,系统会自动重置PATH
环境变量。我们可以查看/etc/sudoers
文件,如果其中存在如下所示的这行:
Defaults env_reset
则说明sudo模式下会默认重置环境变量。那么为了能够在sudo下继续使用我们定义的环境变量,我们需要删掉上面这行,并添加如下内容即可。注意/etc/sudoers
文件必须在root权限下才能编辑。
Defaults env_keep += "PYTHONPATH"
Defaults env_keep += "Any other env variable you want to keep"
当然如果我们只想在某个特定路径下执行一次代码,则可以在sudo命令中指定环境变量。指定环境变量的格式为ENV=/path/to/env
。
sudo PATH=/path/to/your/env python /path/to/your/script.py