Ошибка импорта Python из CGI-скрипта, работающего на локальном IIS - PullRequest
0 голосов
/ 23 мая 2019

Я запускаю CGI-скрипт на локальном Win10 IIS. Все прошло нормально. Затем я установил 'dateparser' для добавления функциональности. Это привело к ошибке, которую я цитирую здесь (результат моего AJAX-запроса):

импорт dateparser как дп Файл "C: \ Users \ fmoeller \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ dateparser__init __. Py", строка 4, в из .date import DateDataParser Файл "C: \ Users \ fmoeller \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ dateparser \ date.py", строка 9, в импортировать шесть ModuleNotFoundError: нет модуля с именем 'six'

Достаточно забавно, что все работает, как и ожидалось, при запуске скрипта из командной строки.

Что может быть не так?

Вот скрипт Python:

import os, sys
import json
from datetime import datetime
import dateparser as dp

def receive_data():
    content_len = int(os.environ["CONTENT_LENGTH"])
    req_body = sys.stdin.read(content_len)
    my_dict = json.loads(req_body)
    return my_dict

def process_data(my_dict):
    raw = my_dict['dt']
    try:
        dt = dp.parse(raw, languages=['de'])
    except ValueError:
        processed = ''
    else:
        processed = datetime.strftime(dt, '%d.%m.%Y')

    my_dict['dt'] = processed
    return my_dict

def return_data(my_dict):
    print('Content-Type: application/json\n\n')
    print(json.dumps(my_dict))

if __name__ == '__main__':
    # I have commented this out just for the test from the command line !!!
    # my_dict = receive_data()

    # also this line is only for command line test
    my_dict = {'dt': '01022020'}
    my_dict = process_data(my_dict)
    return_data(my_dict)

Хотя я не считаю это необходимым, это вызывающая часть javascript:

                <input id="input_bis" />
                <script>
                    document.getElementById('input_bis').onkeypress = function (e) {
                        if (!e) e = window.event;
                        if (e.keyCode == '13') {
                            var value = this.value
                            $(function () {
                              $.ajax({
                                type: "POST",
                                url: "http://localhost/check_date.py",
                                data: JSON.stringify({ "dt": value}),
                                dataType: "json",
                                  success: function (response) {
                                      document.getElementById('input_bis').value = JSON.parse(JSON.stringify(response))['dt'];
                                  },
                                error: function (ajaxContext) { alert(ajaxContext.responseText) },
                              });
                            });
                            return false;
                        }
                    }
                </script>
...