2017-03-16 49 views
4

我在通过Windows cmd运行Luigi任务时遇到问题。下面是事实:从cmd运行Luigi任务 - “没有模块命名任务”

  • 运行所安装在C蟒:\ ProgramData \ Anaconda2(Python 2.7版)

  • 阿纳康达增加了它的路径到PATH变量但没有PYTHONPATH可变

  • 我试图运行的任务位于C:\....\tasks.py

  • 尝试如下运行:

    C:\.... luigi --module tasks MyTask --dt 20170316
    ImportError: No module named tasks

我试图创建一个PYTHONPATH变量和添加的确切路径包含我tasks.py文件的目录,但没有奏效。我有另外一个问题,这可能与是,当我使用通过CMD启动路易吉调度:

luigid 

它工作正常,但每当我尝试使用启动它:

luigid --background 

我得到的以下错误:

No module named pwd 

这似乎是我的设置总体上有什么问题,任何帮助将不胜感激。

回答

3

luigi存储库中的examples目录(git clone ...,您有luigi目录)。在那里,你可以找到几个不同的例子,其中:

  • hello_world.py包含像task_namespace = 'examples'的东西(这是一样的Python模块examples存储库中的所有这些蟒蛇文件被保存):
    • 这可能仅使用luigi命令(不需要具有守护进程luigid)从蟒模块的外部来执行examples为: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(也许powershellcmd不允许你使用&&连接命令,但你总是可以一个接一个地运行这些命令)。

我不知道原因/解释,但排除了一下这个情况,您可以用hello_world.py播放和运行它cd luigi/examples && PYTHONPATH=. luigi --module hello_world HelloWorldTask --local-scheduler(请注意,luigi调用命令examples.为前缀的命令参数),这会给以下异常:

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相关的内部原因)。