Python Can';使用root用户时不导入模块
如果在运行python时可以导入模块,但在运行SudoPython时不能导入模块,该怎么办 例如:Python Can';使用root用户时不导入模块,python,Python,如果在运行python时可以导入模块,但在运行SudoPython时不能导入模块,该怎么办 例如: whoami rose python >>> import mymodule >>> sudopython >>>导入mymodule 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ImportError:没有名为mymodule的模块 我在包含此模块的软件包上运行了sudo chown-R rose:rose sudo哪个python和哪
whoami
rose
python
>>> import mymodule
>>>
sudopython
>>>导入mymodule
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:没有名为mymodule的模块
我在包含此模块的软件包上运行了sudo chown-R rose:rose
sudo哪个python
和哪个python
都打印/usr/bin/python
我正在运行Linux。由于我的
/etc/sudoers
包含默认环境重置
,因此sudo
环境不包含我的PYTHONPATH
。我只是简单地在/etc/sudoers
中添加了Defaults env_keep+=“PYTHONPATH”
,现在它就可以工作了。对于您的根用户来说,$PYTHONPATH
很可能是不同的,甚至没有设置。@code学徒我确实必须将模块放在我的$PYTHONPATH
上,但是echo$PYTHONPATH
和sudo-echo$PYTHONPATH
打印同样的东西。@code学徒那会很奇怪。使用sudo
运行命令时,环境变量相同。这是针对linux的,并且仅当命令从同一shell进程运行时。可能是怎么回事on@karthikr我在/etc/sudoers
中添加了Defaults env\u keep+=“PYTHONPATH”
,现在它可以工作了。实际上,你也尝试过sudo-E-H选项吗?这将保留您的环境变量。。。如果这对您来说不是一个风险,那么使用它会更简单。Mayou36是正确的,但是-H选项将HOME环境变量设置为密码数据库条目中的内容。在我的例子中,sudo-E本身就足以保留PYTHONPATH并允许使用库,在我的例子中是“uinput”。@Mayou36请将其作为一个答案发布
sudo python
>>> import mymodule
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named mymodule