"escape-последовательности, начинающиеся с \, отключены. Это удобно для файловых путей, так как \ является разделителем пути, и вы не хотите, чтобы он запускал escape-последовательность. (r'C: \ examples ') == (' C: \ \Примеры')

я есть библиотека Python, которую я пытаюсь использовать через вызов IronPython (v2.7 RC1 [2.7.0.30]) из приложения C #. Библиотека использует NumPy и SciPy довольно широко, чтоработает с участиемSciPy и NumPy для .NET когда запускается с использованием ipy из командной строки, например:

ipy.exe -X:Frames file_from_lib_importing_numpy.py

Однако, когда я вызываю IronPython из C #, используя приведенный ниже код, возникает исключение:

ImportException
"No module named mtrand"
   at Microsoft.Scripting.Runtime.LightExceptions.CheckAndThrow(Object value)
   at IronPython.Runtime.Operations.PythonOps.ImportStar(CodeContext context, String fullName, Int32 level)
   at Microsoft.Scripting.Interpreter.ActionCallInstruction3.Run(InterpretedFrame frame)
   ...
   at Microsoft.Scripting.SourceUnit.Execute(Scope scope, ErrorSink errorSink)
   at Microsoft.Scripting.Hosting.ScriptSource.Execute(ScriptScope scope)
   at Microsoft.Scripting.Hosting.ScriptEngine.ExecuteFile(String path)
   at Microsoft.Scripting.Hosting.ScriptRuntime.ExecuteFile(String path)
   at Microsoft.Scripting.Hosting.ScriptRuntime.UseFile(String path)
   ...

Код C # (его часть), который вызывает IronPython, выглядит следующим образом:

    ScriptEngine _engine;

    var opts = new Dictionary<string, object>();
    opts["Frames"] = ScriptingRuntimeHelpers.True;
    _engine = Python.CreateEngine(opts);

    var sp = _engine.GetSearchPaths();
    sp.Add(@"c:\Program Files\IronPython 2.7");
    sp.Add(@"c:\Program Files\IronPython 2.7\DLLs");
    sp.Add(@"c:\Program Files\IronPython 2.7\Lib");
    sp.Add(@"c:\Program Files\IronPython 2.7\Lib\site-packages");
    sp.Add(_path);
    _engine.SetSearchPaths(sp);

    var _runtime = _engine.Runtime;
    var scope = _runtime.ExecuteFile(Path.Combine(_path, "mytest.py"));

В целях тестирования я выполняю следующий файл «mytest.py»:

    import sys
    sys.path.append(r'c:\Program Files\IronPython 2.7')
    sys.path.append(r'c:\Program Files\IronPython 2.7\DLLs')
    sys.path.append(r'c:\Program Files\IronPython 2.7\Lib')
    sys.path.append(r'c:\Program Files\IronPython 2.7\Lib\site-packages')

    import os, os.path
    cd = os.path.dirname(__file__)
    if not cd in sys.path:
        sys.path.append(os.path.dirname(__file__))

    import numpy as np
    print 'OK'

    x = np.array([1,2])
    print x

Который не в строке 12 «импортировать NumPy как NP». Проблема в том, что файл__init__.py в IronPython 2.7 \ Lib \ site-packages \ numpy \ random \ содержит следующую строку

from mtrand import *

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

Ответы на вопрос(2)

Ваш ответ на вопрос