以根用户身份执行python,没有名为的模块
因为我需要在python代码中创建一个原始套接字,所以我需要以root用户身份运行它。 当我这样做时,我发现我导入的模块不知何故不再受支持:以根用户身份执行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
`No module named foo`
(我曾经以shmyscript.sh选项1
的形式运行脚本,其中从myScript.sh
中调用pythonscript.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,请使用它避免将模块和包直接安装到系统文件夹)