【问题标题】:Running twistd as root, modules aren't found以root身份运行twistd,找不到模块
【发布时间】:2009-11-27 08:45:17
【问题描述】:

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

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

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

【问题讨论】:

标签: python twisted


【解决方案1】:

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

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

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

【讨论】:

  • 等等,使用 authbind 我可以在端口
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 2013-12-19
  • 2022-09-29
  • 2020-07-14
  • 2010-09-15
相关资源
最近更新 更多