对于我正在做的一个项目,我需要能够以root用户身份进行调试。
我已经知道了如何以root用户身份启动解释器,而不需要系统的许可。我补充道:
user ALL=(root) NOPASSWD:/home/user/git/Project/bin/python2.7敬/etc/sudoers.tmp。我使用的路径指向我在这个项目中使用的虚拟环境的python解释器。LiClipse项目也使用此路径。现在我只需要让LiClipse以根用户身份运行解释器,但我不想以根用户身份启动LiClipse。我只想让它在调试时使用这个解释器作为root。我该怎么做呢?
发布于 2016-01-22 17:51:25
在这种情况下,我建议使用远程调试。然后,您可以让进程以所需的任何用户身份运行,并且IDE可以作为另一个用户独立运行,甚至可以在另一个服务器上运行。
假设您在LiClipse中使用PyDev,您可以通过以下the documentation for remote debugging配置远程调试。
基本前提是您将pydev调试器库添加到您的Python路径中,并在需要断点的位置包括以下内容:
import pydevd
pydevd.settrace('localhost', port=7788, stdoutToServer=True, stderrToServer=True)然后,使用在该服务器(本例中为7788)监听的pydev实例配置您的集成开发环境。
如果要使用集成开发环境中的断点,可以添加参数suspend=False,调试器在遇到断点之前不会挂起。
发布于 2016-01-22 19:07:07
在PyDev中,您实际上可以选择一个shell脚本,该脚本将执行实际的Python来执行运行...然后,您可以将shell脚本配置为首先执行任何特殊设置。
即:您的脚本可以是一个名为python_on_root.sh的文件,其内容如下:
#!/bin/bash
source setup_env.bash
sudo python "$@"然后,在解释器配置中,选择python_on_root.sh以创建将以根用户身份执行的解释器。
请注意,对于其他有趣的事情也可以这样做--比如在docker容器中运行或首先激活conda环境-- sky是极限;)
https://stackoverflow.com/questions/34851693
复制相似问题