IronPython sys._getframe не найден - PullRequest
       16

IronPython sys._getframe не найден

13 голосов
/ 09 августа 2011

В настоящее время я создаю программу на C #, которая будет вызывать функции из предоставленных файлов сценариев Python.
Некоторые из этих файлов сценариев вызывают _getframe() в sys, что приводит к ошибке:

System.MissingMemberException: у объекта 'module' нет атрибута '_getframe'

(поскольку у IronPython по умолчанию нет _getframe.)

У меня естьвыполнил довольно много поисковика и обнаружил, что вы можете активировать его в ipy.exe, указав -X:Frames в качестве параметра командной строки, однако это не решает мою проблему, поскольку я не использую ipy.exe напрямую для выполнениякод Python.

В этой теме они упоминают перестройку IronPython из исходного кода с параметрами командной строки, я скачал исходные файлы, но не знаю, как создать его с этими параметрами.
Также они упоминаютчто параметры указаны в официальном установщике, я несколько раз запускал установщик exe, но не видел их там.

Ответы [ 2 ]

17 голосов
/ 09 августа 2011

При создании PythonEngine вы можете передать словарь опций;вам просто нужно установить ключи "Frames" и / или "FullFrames" в словаре на true:

var options = new Dictionary<string, object>();
options["Frames"] = true;
options["FullFrames"] = true;
ScriptEngine engine = Python.CreateEngine(options);

Если вы не хотите использовать FullFrames, просто не указывайте или установите false.

6 голосов
/ 28 января 2015

Немного выходит за рамки вопроса, но для всех, кто получил эту ошибку, вызвав скрипт Python с использованием интерпретатора ipy.exe напрямую.

Вы можете просто добавить аргумент -X:FullFrames. Так, например, вызвать скрипт как

ipy.exe -X:FullFrames script.py
...