Luigi Pipelining: в Windows нет модуля с именем pwd - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь выполнить учебник, указанный в 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.Я не могу найти модуль pwd, использующий pip для Windows.

  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'

Я работаю в Anaconda Spyder с Python 3.6

Ответы [ 3 ]

0 голосов
/ 26 июля 2018

Основная проблема здесь в том, что 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)

Этот существующий ответ о переполнении стека предоставляет более подробную информацию:

Как запустить процесс демона из python наwindows?

Опции, которые я вижу здесь:

  1. Зарегистрируйте запрос с Luigi на github, чтобы улучшить их поддержку Windows, чтобы вызывать Luigid как процесс Windows для --backgroundswitch
  2. Запустите виртуальную машину с соответствующей ОС Unix в Windows и запустите там конвейеры Luigi.
  3. Следуйте предложению Стивена Г. и запустите luigid в отдельной командной строке

Чтобы воспроизвести основную причину этой проблемы, откройте приглашение python в Windows и введите:

>>import daemon

Traceback (последний вызов был последним): Файл "", строка 1, вФайл "C: \ Anaconda3 \ lib \ site-packages \ daemon__init __. Py", строка 42, из .daemon import DaemonContext Файл "C: \ Anaconda3 \ lib \ site-packages \ daemon \ daemon.py", строка 25,в импорте pwd ModuleNotFoundError: нет модуля с именем 'pwd'

0 голосов
/ 22 августа 2018

Мне удалось это исправить, установив python-daemon == 2.1.2 Если у вас уже есть python-daemon, попробуйте перейти на версию 2.1.2. Сделайте это перед установкой luigi.

Пример: pip installpython-daemon == 2.1.2, затем pip install luigi.

0 голосов
/ 24 июля 2018

По какой-то причине, если вы не используете параметр --background в Windows, он начнется просто отлично

просто напишите luigid в cmd

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...