Child pages
  • Заметки кодера. Отладка скриптов под Windows.

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Сразу скажу. Полноценно нок под Windows не запустить. Это связано с переходом на SupervisorD, данная система он не поддерживает Windows и, в целях, такой поддержки нетпланах, о реализации работы под Windows не упоминается.

Если нужен полноценный НОК по Windows - поставьте Linux/FreeBSD.... Нет, я серьёзно! Поддержка виртуализации, docker контейнеров позволяет не заниматься извращениями в обозримой перспективе. К тому же, не конвенциональная политика Microsoft всё равно заставит переходить на Linux.

Ну или пользовать старый добрый CygWin - работоспособность SupervisorD под него заявлена (Руководство1, Руководство2), плюс, не возникнет вышеизложенных нижеизложенных проблем...

Зачем?

Не все пылают трепетной и нежной любовью к Linux, да и обстоятельства, зачастую, складываются так, что инженеру приходится работать с чем дадут. Да и удобно это - отлаживать скрипты на рабочем месте. К тому же PyCharm Professional, который поддерживает удалённую отладку, платен.... а возможность использовать PyCharm Community выглядит соблазнительной.

...

  1. Невозможно запускать сервисы (процессы) НОКа. Поддерживается отладка только скриптов (профилей) оборудования.
  2. Не работает SSH доступ к железкам! (только SNMP и TELNET). Связано это с пакетом pylibssh2 - он не собирается под Windows.... Подробности в разделе проблемы.
  3. Невозможно использовать Virtualenv. Только системный Python. Подробности в разделе Проблемы.
  4. Возможно, не работает ещё что-то... 

...

  1. Нам потребуется Python. Тестировались под последней версии 2.7. Подходит  и Active Python и обычный.
  2. PyCharm Community Edition - ради его возможности оладки всё и затевалось. (если у вас есть Professional, рекомендую забить на всё это и пользоваться режимом удалённой отладки).
  3. Терпение, терпение и ещё раз терпение.
  4. Желание чтобы это заработало.

Установка необходимого ПО.

Python

Подойдёт версия 2.7 Либо ActivePython, или обычный Python необходима версия x86.

PyCharm

Скачиваем и устанавливаем PyCharm Community Edition.

Microsoft Compiler for Python

...

Note

Нок постоянно дописывается. Поэтому, не исключена ситуация когда что-то не заработает. Если такое случилось и инструкция уже не актуальна, можно:

  • Поправить проблему самому
  • Откатиться на версию без проблемы
  • Написать составителю статьи)

Писать разработчикам смысла нет. Т.к. конфигурация является не поддерживаемой.

Установка необходимого ПО.

Python

Подойдёт версия 2.7 Либо ActivePython, или обычный Python необходима версия x86.

PyCharm

Скачиваем и устанавливаем PyCharm Community Edition.

Microsoft Compiler for Python

Урезанный компилятор от Microsoft для сборки пакетов по Python из исходных кодов. Скачиваем тут. После установки (устанавливается он в "") необходимо добавить его в путь поиска Python, иначе, при попытке собрать пакте, будет выдаваться сообщение: "unable to find vcvarsall.bat". Для этого в файле "<python_folder>\Lib\distutils\msvc9compiler.py" находим метод "def find_vcvarsall(version):" и в конце, перед строчкой "if not productdir:", добавляем "productdir= "C:/Users/<CurrentUser>/AppData/Local/Programs/Common/Microsoft/Visual C++ for Python/9.0" (где <CurrentUser> необходимо заменить на текущего пользователя, под которым происходила установка компилятора)

...

Note

Распаковывать нок, необходимо на том-же диске, на котором находится python.!

Note

Папка, в которую распакован/клонирован NOC должна называться noc. Иначе не заработает.

...

Требования NOC'a в части модулей Python'a. Установка, практически, не доставляет проблем. Список пакетов находится в файлике "node.txt", папка папке requirements НОКа. Но, некоторые пакеты необходимо придётся установить вручную:

  1. Копируем файлик <noc_dir>\requirements\node.txt в какую-нибудь папку. Переименовываем его в node-windows.txt.
  2. Исключаем из него следующие пакеты (удаляем строчки с ними):
    • atomiclong==0.1.1 - не компилируется по под Windows
    • pyproj==1.9.4
    • noc-pkg-pyclips==1.0.7
    • numpy==1.9.2
  3. После этого даём команду "pip -r node-windows.txt"
  4. Доустанавливаем пакеты pyproj и numpy командами "pip install pyproj" и pip install numpy
  5. Если возникли ошибки, то ищем проблемные пакеты здесь, скачиваем и устанавливаем вручную.

...

    • 1.9.2
  1. После этого даём команду "pip -r node-windows.txt"
  2. Доустанавливаем пакеты pyproj и numpy командами "pip install pyproj" и "pip install numpy"
  3. Если возникли ошибки, то ищем проблемные пакеты здесь, скачиваем и устанавливаем вручную.

Пакеты atomiclong и noc-pkg-pyclips для отладки скриптов не требуются, поэтому, их отсутствие на работоспособности не скажется.

Code Block
languagebash
>c:
> mkdir repository
> cd repository
> hg clone https://bitbucket.org/nocproject/noc noc
> copy noc\requirements\node.txt noc\requirements\node-windows.txt
> pip install -r noc\requirements\node-windows.txt
> pip install pyximport numpy pyproj

Настройка PyCharm

Открываем проект с НОКом (н-р он лежит в папке <noc_path> ("C:\repository\aversant\noc")).

...

В этом разделе я пошагово опишу попытки запуска и какие ошибки, при этом, возникают. В конце приведёна ссылка на репозиторий с уже выполненными исправлениями, поэтому, можно пропустить этот раздел и переходить к последней главе. И, если что-то не заработало, уже искать здесьискать здесь причины. Если причину найти не удалось - напишите мне, я посмотрю.

Глобальная проблема запуска НОКа на Windows - это пути. В коде НОКа очень много мест, где указываются пути и прописаны они в UNIX формате. Т.е. на Windows работать не будут. Основная задача, как раз, связана с поиском этих мест и исправления ситуации. Исправлять можно 2 способами - заменять их на формат Windows. Использовать независимый формат (os.path).

Поскольку, я не владею Python'ом в совершенстве и не знаю ООП, просьба сильно не пинать за кривость подхода! будет лучше если высказать предложения, как сделать правильно. И мне будет полезно и кому-то ещё.

Не работает SSH. Ошибка (EXCEPTION: <type 'exceptions.ImportError'> Cannot load handler 'noc.core.script.cli.ssh.SSHCLI': No module named libssh2)
Anchor
libssh_trouble
libssh_trouble

Проблема в libssh2, при компиляции всплывает ошибка: "libssh2.h(133) : error C2371: 'ssize_t' : redefinition; different basic types"

...

Данный модуль лежит в папке "noc\core\snmp\", а ошибка связана с тем, что он подгружает откомпилированные модули (лежат в "speedup\ber"). Чтобы поправить ошибку необходим добавленный компилятор Microsoft для Python и добавить модуль "import pyximport" поправить файл "core/snmp/ber.py". Добавлять необходимо перед строчкой импорта "from noc.speedup.ber import parse_tlv_header, parse_p_oid".

...

Проверить, что указана переменная DJANGO_SETTINGS_MODULE, проверить что внесены все правки.

...

Возможности

Преодолев все ошибки у нас появилась возможность отлаживать скрипты для оборудования не отходя от рабочего места:

Привожу настройки для 2 вариантов - отладка скрипта с доступом к оборудованию и при наличии тушёнки. Выполнение настраивается в списке на выполнении (см. Заметки кодера. Настраиваем среду разработки под Windows)

Image AddedImage Added

Рабочий репозиторий
Anchor
repositary_work
repositary_work

...