как решить ошибку IronPython - PullRequest
0 голосов
/ 30 мая 2018

Я использовал c # и python от Ironpython ..

Это мой код:

var engine = IronPython.Hosting.Python.CreateEngine();
var searchPaths = engine.GetSearchPaths();
searchPaths.Add(@"C:\Program Files\IronPython 2.7\Lib");
searchPaths.Add(@"C:\Users\AppData\Local\Programs\Python\Python36-32");
searchPaths.Add(@"C:\Users\AppData\Local\Programs\Python\Python36-32\Lib");
searchPaths.Add(@"C:\Users\AppData\Local\Programs\Python\Python36-32\Lib\site-packages");
engine.SetSearchPaths(searchPaths);

String URL = "";

try
{
    URL = URLTB.Text.Trim();
    var scope = engine.CreateScope();
    engine.CreateScriptSourceFromFile("crawling.py").Execute(scope);

    var setUrl = scope.GetVariable<Func<object, object>>("setURL");
    var data = setUrl(URL);
}
catch (Exception ex)
{
    MessageBox.Show("Crawling error : " + ex.Message);
}

Но я получил ошибку:

913 не втребуемый диапазон "at 'Execute (scope)'

Я не знаю, что такое 913 ..

Как я могу это решить? Python-код - это сканирующий код ... и этохорошо работает.

1 Ответ

0 голосов
/ 26 апреля 2019

У меня была та же проблема, я искал в других пакетах, импортированных с пакетом, который я первоначально установил, и обнаружил, что он находится в пакете HTML Python.Он находится в библиотеке html, а файл - entity.py.Код составляет два списка символов в кодовой точке.Затем он создает словарь с именем символа и устанавливает его.Например:

# maps the Unicode code point to the HTML entity name
codepoint2name = {}

# maps the HTML entity name to the character
# (or a character reference if the character is outside the Latin-1 range)
entitydefs = {}

for (name, codepoint) in name2codepoint.items():
    codepoint2name[codepoint] = name
    entitydefs[name] = chr(codepoint)

очевидно, что C # IronPython не принимает значения выше 255 в chr (n) Python.Я «решил» проблему, добавив if в for:

for (name, codepoint) in name2codepoint.items():
    codepoint2name[codepoint] = name
    if(codepoint <= 255):
        entitydefs[name] = chr(codepoint)

Я не знаю, действительно ли вы можете назвать это решением, но я не знаю, как решить его лучше.Интересно, почему это так ...

...