从cmd运行Luigi任务 - "没有模块命名的任务"

Kri*_*iev 5 python-2.7 anaconda luigi

我在通过Windows cmd运行Luigi任务时遇到问题.以下是事实:

  • 运行安装在C:\ ProgramData\Anaconda2中的Anaconda(Python 2.7)

  • Anaconda已将其路径添加到PATH变量,但没有PYTHONPATH变量

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

  • 试着按如下方式运行它:

    C:\ .... luigi --module tasks MyTask --dt 20170316
    ImportError:没有名为tasks的模块

我尝试创建一个PYTHONPATH变量并添加包含我的tasks.py文件的目录的确切路径,但它不起作用.我遇到的另一个问题是,当我通过cmd使用以下命令启动luigi调度程序时:

luigid
Run Code Online (Sandbox Code Playgroud)

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

luigid --background
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

No module named pwd
Run Code Online (Sandbox Code Playgroud)

我的整体设置似乎有问题,任何帮助都会受到赞赏.

小智 11

我遇到了同样的问题并解决了它。您要调度或执行的模块必须位于 sys.path 中列出的任何文件夹中 在 WINDOWS TERMINAL/CMD/ 中实现此目的的方法之一是导航到您拥有 python 模块的文件夹并执行命令:

set PYTHONPATH=%cd%;%PYTHONPATH%
Run Code Online (Sandbox Code Playgroud)

该命令会将您的当前目录临时添加到现有的 PYTHONPATH。如果系统中没有 PYTHONPATH 变量,请跳过分号后的部分。
在同一个终端窗口中发出 luigi 命令。

luigi --module tasks MyTask --local-scheduler
Run Code Online (Sandbox Code Playgroud)

如果您仍然遇到问题,请使用以下命令将您的 PYTHONPATH 添加到 PATH 变量:

set PATH=%PYTHONPATH%;%PATH%
Run Code Online (Sandbox Code Playgroud)

对我来说,将当前文件夹添加到 PYTHONPATH 可以工作,并且使用批处理文件很容易执行。或者,您可以在 Windows 中永久添加此变量。