Я добавил пакеты IronPython Nuget в свое решение Visual Studio Winform C # для использования скриптов Python из кода.
Ниже мой код:
private void BtnJsonPy_Click(object sender, EventArgs e)
{
// 1. Create Engine
var engine = Python.CreateEngine();
//2. Provide script and arguments
var script = @"C:\path\repos\SamplePy\SamplePy2\SamplePy2.py"; // provide full path
var source = engine.CreateScriptSourceFromFile(script);
// dummy parameters to send Python script
int x = 3;
int y = 4;
var argv = new List<string>();
argv.Add("");
argv.Add(x.ToString());
argv.Add(y.ToString());
engine.GetSysModule().SetVariable("argv", argv);
//3. redirect output
var eIO = engine.Runtime.IO;
var errors = new MemoryStream();
eIO.SetErrorOutput(errors, Encoding.Default);
var results = new MemoryStream();
eIO.SetOutput(results, Encoding.Default);
//4. Execute script
var scope = engine.CreateScope();
var lib = new[]
{
"C:\\path\\SamplePy\\packages\\IronPython.2.7.9\\lib",
"C:\\path\\SamplePy\\packages\\IronPython.2.7.9",
};
engine.SetSearchPaths(lib);
engine.ExecuteFile(script, scope);
//source.Execute(scope);
//5. Display output
string str(byte[] x1) => Encoding.Default.GetString(x1);
Console.WriteLine("Errrors");
Console.WriteLine(str(errors.ToArray()));
Console.WriteLine();
Console.WriteLine("Results");
Console.WriteLine(str(results.ToArray()));
}
Я получаю сообщение об ошибке, что модуль не установлен. Поэтому я открыл папку пакетов, в которой находится IronPython, в моем решении для кода, и попытался установить модули с помощью pip, но командная строка всегда сообщает, что команда pip не распознана.
Я попробовал следующее: откройте командную строку, измените каталог на мои файлы кода, содержащие пакеты IronPython, и используйте команды pip, но это не удалось. Я также попробовал команду «python -m pip install pillow», но она тоже не удалась.
Поэтому я должен установить IronPython отдельно от "ironpython.net/download", а затем установить необходимые модули на путь, где был сохранен IronPython, и затем использовать эти ссылки внутри моего кода ?. Будет ли этот подход работать нормально?.
Любые предложения, документация или кодовый подход были бы хороши.
Заранее спасибо !!! ..