4

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

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

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

4

1 回答 1

7

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

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

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

于 2009-11-27T18:14:54.577 回答