настройка ironpython: модуль не найден - PullRequest
0 голосов
/ 25 февраля 2019

Я впервые использую Ironpython для импорта скрипта Python в C #.Я получаю сообщение об ошибке «Нет модуля с именем numpy», но я не знаю почему.Я прочитал, что мне нужно добавить мой путь к моим модулям в мой скрипт Python.Это мой скрипт на python:

import numpy as np
import sys
sys.path.append(r"C:\Users\abc\CSharp\PythonScriptExecution1\packages\IronPython.2.7.9\lib")
sys.path.append(r"C:\Users\abc\PycharmProjects\untitled3\venv\Lib")
sum = np.sum([0.5, 1.5])
print(sum)

Второй путь - это путь, который также используется как интерпретатор проекта в Pycharm для python.exe.

Мой код C # такой:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PythonScriptExecution2
{
    class Program
    {
        static void Main(string[] args)
        {
            Microsoft.Scripting.Hosting.ScriptEngine pythonEngine =
                IronPython.Hosting.Python.CreateEngine();
            // We execute this script from Visual Studio 
            // so the program will be executed from bin\Debug or bin\Release
            Microsoft.Scripting.Hosting.ScriptSource pythonScript =
                pythonEngine.CreateScriptSourceFromFile("C:/Users/abc/PycharmProjects/untitled3/test.py");
            pythonScript.Execute();
        }
    }
}

Запуск скрипта Python в Pycharm работает нормально, но импорт его в C # приводит к ошибке, упомянутой выше.Может кто-нибудь помочь мне, как установить правильные пути?

edit: Если это не сработает, кто-нибудь знает какой-либо другой способ запуска скрипта Python с C #?

1 Ответ

0 голосов
/ 25 февраля 2019

Относится к Как добавить модули в Iron Python?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PythonScriptExecution2
{
    class Program
    {
        static void Main(string[] args)
        {
            Microsoft.Scripting.Hosting.ScriptEngine eEngine =
                IronPython.Hosting.Python.CreateEngine();
            // We execute this script from Visual Studio 
            // so the program will be executed from bin\Debug or bin\Release
            Microsoft.Scripting.Hosting.ScriptSource pythonScript =

            ICollection<string> searchPaths = engine.GetSearchPaths();
            searchPaths.Add(@"C:\Users\abc\CSharp\PythonScriptExecution1\packages\IronPython.2.7.9\lib");
            searchPaths.Add(@"C:\Users\abc\PycharmProjects\untitled3\venv\Lib");
            engine.SetSearchPaths(searchPaths);

            engine.CreateScriptSourceFromFile("C:/Users/abc/PycharmProjects/untitled3/test.py");
            pythonScript.Execute();
        }
    }
}
...