获取luigi 存储库中的examples 目录(git clone ... 并且您拥有luigi 目录)。在那里您可以找到一些不同的示例,其中包括:
-
hello_world.py 包含 task_namespace = 'examples' 之类的东西(这与保存所有这些 python 文件的存储库中的 python 模块 examples 相同):
- 这可以只使用 python 模块
examples 外部的luigi 命令(不需要守护程序luigid)执行:cd luigi && PYTHONPATH=. luigi --module examples.hello_world examples.HelloWorldTask --local-scheduler
-
top_artists.py 不包含对 task_namespace 之类的任何引用:
- 这可以从 python 模块中运行
examples: cd luigi/examples && PYTHONPATH='.' luigi --module top_artists AggregateArtists --local-scheduler --date-interval 2012-06
这对我使用 miniconda(类似于 anaconda)和 cygwin 有效,但我认为即使您不使用 cygwin 也可以工作strong>(也许powershell 或cmd 不允许您使用&& 连接命令,但您始终可以一个接一个地运行这些命令)。
我不确定原因/解释,但要解决此问题,您可以使用hello_world.py 并以cd luigi/examples && PYTHONPATH=. luigi --module hello_world HelloWorldTask --local-scheduler 运行它(请注意luigi 命令在没有@ 的情况下被调用987654342@作为命令参数的前缀),这将给出以下异常:
raise TaskClassNotFoundException(cls._missing_task_msg(name))
luigi.task_register.TaskClassNotFoundException: No task HelloWorldTask. Candidates are: Config,ExternalTask,RangeBase,RangeByMinutes,RangeByMinutesBase,RangeDaily,RangeDailyBase,RangeHourly,RangeHourlyBase,Task,TestNotificationsTask,WrapperTask,batch_email,core,email,examples.HelloWorldTask,execution_summary,retcode,scheduler,sendgrid,smtp,worker
为了提示您使用守护程序遇到的其他问题,我在 cygwin 上使用如下命令启动它:luigid &。该&符号后缀为您返回命令行提示符。要检查哪个 PID 与守护程序相关联,我仍然在 cygwin 上使用相同的命令行提示符并运行 ps aux | grep luigid。这种方法可能只适用于 cygwin(因为一些 bash 相关的内部结构)。