【问题标题】:Luigi Pipelining : No module named pwd in WindowsLuigi Pipelining:Windows 中没有名为 pwd 的模块
【发布时间】:2025-12-29 03:10:17
【问题描述】:

我正在尝试执行https://marcobonzanini.com/2015/10/24/building-data-pipelines-with-python-and-luigi/ 中给出的教程。

我可以使用本地调度程序自行运行程序,给我:

Scheduled 2 tasks of which:
* 2 ran successfully:
    - 1 PrintNumbers(n=1000)
    - 1 SquaredNumbers(n=1000)

This progress looks :) because there were no failed tasks or missing external de
pendencies

===== Luigi Execution Summary =====

但是,要在服务器上尝试可视化,当我尝试运行 luigid --background 时,它会抛出一个错误,说我没有 pwd 模块。 我找不到使用 pip for windows 的 pwd 模块。

  File "c:\users\alex\appdata\local\continuum\anaconda3\lib\site-packages
\luigi\process.py", line 79, in daemonize
    import daemon
  File "c:\users\alex\appdata\local\continuum\anaconda3\lib\site-packages
\daemon\__init__.py", line 42, in <module>
    from .daemon import DaemonContext
  File "c:\users\alex\appdata\local\continuum\anaconda3\lib\site-packages
\daemon\daemon.py", line 25, in <module>
    import pwd
ModuleNotFoundError: No module named 'pwd'

我正在使用 Python 3.6 在 Anaconda Spyder 中工作

【问题讨论】:

    标签: python python-3.x luigi pipelining


    【解决方案1】:

    我可以通过安装 python-daemon==2.1.2 来解决这个问题 如果您已经有 python-daemon,请尝试降级到版本 2.1.2 在安装 luigi 之前执行此操作。

    示例: pip install python-daemon==2.1.2 然后 pip install luigi。

    【讨论】:

      【解决方案2】:

      由于某种原因,如果你不在 windows 上使用 --background 参数,它会启动得很好

      只需在 cmd 中写入 luigid

      【讨论】:

        【解决方案3】:

        这里的基本问题是 luigid --background 试图生成一个 python-daemon,它是一个特定于 unix 的东西。

        在此处查看标题为“luigid 服务器”的部分:http://luigi.readthedocs.io/en/stable/central_scheduler.html

        具体来说:

        请注意,这需要 python-daemon。默认情况下,服务器在 AF_INET 和 AF_INET6 端口 8082(可以使用 --port 标志更改)上启动并侦听所有 IP。 (要使用 AF_UNIX 套接字,请使用 --unix-socket 标志)

        这个现有的堆栈溢出答案提供了更多细节:

        How to start daemon process from python on windows?

        我在这里看到的选项是:

        1. 在 github 上向 Luigi 记录一个请求,以改进他们的 Windows 支持以生成 Luigid 作为 --background 开关的 Windows 进程
        2. 在 Windows 上运行带有适当 Unix 操作系统的虚拟机,并在那里运行 Luigi 管道。
        3. 按照 Steven G 的建议,在单独的命令提示符下运行 luigid

        要重现此问题的根本原因,请在 Windows 中打开 python 提示符并键入:

        >>import daemon
        

        Traceback(最近一次调用最后一次):文件“”,第 1 行,in 文件 "C:\Anaconda3\lib\site-packages\daemon__init__.py", 第 42 行,在 从 .daemon 导入 DaemonContext 文件“C:\Anaconda3\lib\site-packages\daemon\daemon.py”,第 25 行,在 import pwd ModuleNotFoundError: No module named 'pwd'

        【讨论】: