ModuleNotFoundError: нет модуля с именем 'pyzabbix' - PullRequest
0 голосов
/ 10 февраля 2020

pyzabbix - модуль, необходимый для работы этого скрипта. Я установил его с помощью pip, см. Подтверждение ниже:

  WARNING: The script chardetect.exe is installed in 'C:\Users\Christopher Ezimoha\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed certifi-2019.11.28 chardet-3.0.4 idna-2.8 pyzabbix-0.7.5 requests-2.22.0 urllib3-1.25.8
C:\Users\Christopher Ezimoha\Desktop>

Однако в строке 24 появляется сообщение об ошибке, что модуль не найден. Я не уверен, что мне нужно делать. Пожалуйста, ознакомьтесь с приведенным ниже сценарием и сообщите соответственно, так как мне нужен этот код для чтения файла CSV и обновления приложения с именем Zabbix.

def addHosts(zapi):
    # Add Hosts

    file = open('hosts.csv', 'r')
    reader = csv.reader(file)
    devicelist = list(reader)
    import csv

    def login():
        # Login/authenticate below
        session = ZabbixAPI('https://zabbix.xxxxxx.xxx')
        # session = ZabbixAPI('http://xxxxxxxxxx/zabbix')
        session.login(user="xxxxxxxxxxxx", password="xxxxxxxx")
        print("Connected to Zabbix API Version %s" % session.api_version())
        return session

    for row in devicelist:
        device = row[0]
        hostgroup = row[1]
        responsegroup = zapi.hostgroup.get(filter={'name': hostgroup})
        groupid = responsegroup[0]['groupid']
        ip = row[2]
        templatePriority = row[3]
        responsepriority = zapi.template.get(filter={'name': templatePriority})
        templatePriorityId = responsepriority[0]['templateid']
#        if templatePriority == 'P1':
#            templatePriorityId = '40874'
        templateType = row[4]
        responsetype = zapi.template.get(filter={'name': templateType})
        templateTypeId = responsetype[0]['templateid']
        try:
            response = zapi.host.create(
                host=device,
                interfaces=[{
                    'type': 2,
                    'main': 1,
                    'ip': ip,
                    'dns': '',
                    'port': 161,
                    'useip': 1
                }],
                groups=[{
                    'groupid': groupid}],
                templates=[{'templateid': templatePriorityId}, {'templateid': templateTypeId}],
                inventory_mode=1
            )

            print("Created new host: " + device)
        except ZabbixAPIException as e:
            if 'already exists' in e[0]:
                print("Already created host " + device)
            else:
                print(e[0])
    return


def main():
    #    hostgroup = raw_input('Hostgroup: ')
    #hostgroup = "ALTC - Altcar"
    zapi = login()
    addHosts(zapi)
    return


if __name__ == '__main__':
    main()
.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2020
  1. В коде, который вы включили в вопрос:
from pyzabbix import ZabbixAPI
нет import Функция login() должна быть определена вне addHosts(), чтобы ее можно было вызывать в main()
0 голосов
/ 10 февраля 2020

У вас установлены python 2 и 3? Если у вас есть оба, pip устанавливает модули в python2. Попробуйте установить так, если вы хотите, чтобы модуль был установлен под python3:

pip3 install pyzabbix
...