以根用户身份执行python,没有名为的模块

以根用户身份执行python,没有名为的模块,python,unix,root,sudo,python-import,Python,Unix,Root,Sudo,Python Import,因为我需要在python代码中创建一个原始套接字,所以我需要以root用户身份运行它。 当我这样做时,我发现我导入的模块不知何故不再受支持: `No module named foo` (我曾经以shmyscript.sh选项1的形式运行脚本,其中从myScript.sh中调用pythonscript.py) 现在我尝试:sudofullpathname/myScript.py,我也在它的开头加入了它 #!/usr/bin/python and make it executable by ch

因为我需要在python代码中创建一个原始套接字,所以我需要以root用户身份运行它。 当我这样做时,我发现我导入的模块不知何故不再受支持:

`No module named foo`
(我曾经以
shmyscript.sh选项1
的形式运行脚本,其中从
myScript.sh
中调用python
script.py

现在我尝试:
sudofullpathname/myScript.py
,我也在它的开头加入了它

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

仍然没有名为foo的模块。

使用
sudo
运行命令时,需要保留
PYTHONPATH
<可以通过
sudoers
文件将code>sudo配置为保留某些环境变量

因此,您可以以root用户身份运行
visudo
,并添加如下内容:

Defaults env_keep += "PYTHONPATH"

然后保存更改。

哪里是
script.py
?您的非root用户是否设置了
PYTHONPATH
环境变量?
/bin/python
可能是大多数系统的错误路径。实际上,我的script.py位于我自己的某个目录中。我的非root用户具有环境变量集PYTHONPATH@FatalError:抱歉,我使用的是“/usr/bin/python”,我检查了python可执行文件是否存在,然后您可能需要在以root身份运行脚本时对其进行设置。请使用virtualenv安装外部库,以便以更好的方式维护包和模块:(virtualenv也适用于root,不需要PYTHONPATH,请使用它避免将模块和包直接安装到系统文件夹)