Python Can';使用root用户时不导入模块

Python Can';使用root用户时不导入模块,python,Python,如果在运行python时可以导入模块,但在运行SudoPython时不能导入模块,该怎么办 例如: whoami rose python >>> import mymodule >>> sudopython >>>导入mymodule 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ImportError:没有名为mymodule的模块 我在包含此模块的软件包上运行了sudo chown-R rose:rose sudo哪个python和哪

如果在运行python时可以导入模块,但在运行SudoPython时不能导入模块,该怎么办

例如:

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