以root身份执行Python时找不到模块

1 投票
1 回答
2007 浏览
提问于 2025-04-18 11:35

因为我需要在我的Python代码中创建一个原始套接字,所以我必须以管理员身份运行它。

`No module named foo`

之前我都是通过 sh myScript.sh option1 来运行我的脚本,其中我的Python script.py 是在 myScript.sh 里面被调用的。

现在我尝试用 sudo fullPathName/myScript.py 来运行,并且在脚本的开头加上了

#!/usr/bin/python and make it executable by chmod +x myScript.py

但我还是遇到了 No module named foo 的问题。

1 个回答

3

在使用sudo命令时,你需要保留PYTHONPATH这个环境变量。sudo可以通过一个叫sudoers的文件来设置,确保某些环境变量不会被丢失。

你可以以管理员身份运行visudo,然后添加类似下面的内容:

Defaults env_keep += "PYTHONPATH"

最后,记得保存你所做的更改。

撰写回答