Luigi Pipelining:Windows

时间:2018-05-23 10:30:15

标签: python python-3.x luigi pipelining

我正在尝试执行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工作

3 个答案:

答案 0 :(得分:5)

我能够通过安装python-daemon == 2.1.2来解决此问题 如果您已经拥有python-daemon,请尝试降级至2.1.2版 在安装luigi之前执行此操作。

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

答案 1 :(得分:1)

由于某种原因,如果您在Windows上不使用--background参数,它将开始正常运行

只需在cmd中写入luigid

答案 2 :(得分:1)

这里的基本问题是luigid --background试图生成python守护程序,这是一个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
  

回溯(最近一次通话最后一次):文件“”,第1行,在      文件“ C:\ Anaconda3 \ lib \ site-packages \ daemon__init __。py”,   第42行       从.daemon导入DaemonContext文件“ C:\ Anaconda3 \ lib \ site-packages \ daemon \ daemon.py”,第25行,在          import pwd ModuleNotFoundError:没有名为“ pwd”的模块