以root身份运行twistd,找不到模块

时间:2009-11-27 08:45:18

标签: python twisted

我有一个用Twisted编写的简单Web服务器,我正在尝试使用 twistd 启动它。使用reactor.run()时一切正常,但是当我使用twistd -y(作为root)时,找不到直接子目录中的所有包。我正在以root身份运行,因为服务器在端口80上运行。manpage for twistd说:

请注意,如果twistd以root身份运行,则不会搜索工作目录中的Python模块。

那很好,但为什么呢?我该如何解决?即使我明确设置了该选项,twistd似乎也忽略了--rundir .

1 个答案:

答案 0 :(得分:7)

一般的UNIX智慧是在工作目录中搜索当root是个坏主意时执行的事情。争论说它打开了特洛伊木马的大门。在以root身份运行时,不要忘记将工作目录添加到Python模块导入搜索路径,twistd基本上试图遵循这一智慧。

正如另一位评论者所说,您可以自己明确设置PYTHONPATH以包含包含您的应用所需代码的目录。

您也可以完全跳过以root用户身份运行,并使用authbind绑定低编号端口而不具有超级用户权限。这就是我所有服务器的部署方式。