我正在尝试执行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工作
答案 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?
我在这里看到的选项是:
要重现此问题的根本原因,请在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”的模块