代码之家  ›  专栏  ›  技术社区  ›  pdemarest

无法将numpy导入嵌入式ironpython引擎

  •  3
  • pdemarest  · 技术社区  · 14 年前

    从ipy控制台我可以

    import ironclad
    import numpy
    

    没问题。

    然而,当我使用嵌入式解释器尝试相同的导入时,numpy导入失败。我的Python引擎设置如下:

        public PyEngine()
        {
            //Frames option needed to use sys.__getframe
            //used in Numpy and others.
            Dictionary<string, object> opts = new Dictionary<string, object>();
            opts["Frames"] = ScriptingRuntimeHelpers.True;
    
            engine = Python.CreateEngine(opts);
            scope = engine.CreateScope();
            runtime = engine.Runtime;
        }
    

    我执行这样的语句:

        public void ExecuteStatement(string statement)
        {
            if (statement.Length > 0)
            {
                WriteInputToOutput(statement);
    
                try
                {
                    ScriptSource source = engine.CreateScriptSourceFromString(statement, SourceCodeKind.Statements);
                    object result = source.Execute(scope);
                }
                catch (Exception ex)
                {
                    WriteExceptionToOutput(ex);
                }
            }
        }
    

    异常会打印出以下消息:

        Error executing code:
    System.ArgumentException: Specified path is invalid.
       at Microsoft.Scripting.Interpreter.ThrowInstruction.Run(InterpretedFrame frame)
       at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
       at Microsoft.Scripting.Interpreter.LightLambda.Run2[T0,T1,TRet](T0 arg0, T1 arg1)
       at IronPython.Runtime.PythonFunction.FunctionCaller`1.Call1(CallSite site, CodeContext context, Object func, T0 arg0)
       at load_module$836(Closure , PythonFunction , Object , Object )
       at IronPython.Compiler.PythonCallTargets.OriginalCallTarget2(PythonFunction function, Object arg0, Object arg1)
       at IronPython.Runtime.PythonFunction.FunctionCaller`2.Call2(CallSite site, CodeContext context, Object func, T0 arg0, T1 arg1)
       at CallSite.Target(Closure , CallSite , CodeContext , Object , Object )
       at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
       at IronPython.Runtime.PythonContext.Call(CodeContext context, Object func, Object arg0)
       at IronPython.Runtime.Importer.FindAndLoadModuleFromImporter(CodeContext context, Object importer, String fullName, List path, Object& ret)
       at IronPython.Runtime.Importer.TryLoadMetaPathModule(CodeContext context, String fullName, List path, Object& ret)
       at IronPython.Runtime.Importer.TryGetExistingOrMetaPathModule(CodeContext context, String fullName, List path, Object& ret)
       at IronPython.Runtime.Importer.ImportModule(CodeContext context, Object globals, String modName, Boolean bottom, Int32 level)
       at IronPython.Modules.Builtin.__import__(CodeContext context, String name, Object globals, Object locals, Object fromlist, Int32 level)
       at CallSite.Target(Closure , CallSite , CodeContext , Object , String , PythonDictionary , PythonDictionary , PythonTuple )
       at IronPython.Runtime.Importer.Import(CodeContext context, String fullName, PythonTuple from, Int32 level)
       at IronPython.Runtime.Operations.PythonOps.ImportTop(CodeContext context, String fullName, Int32 level)
       at Microsoft.Scripting.Utils.InvokeHelper`4.Invoke(Object arg0, Object arg1, Object arg2)
       at Microsoft.Scripting.Utils.ReflectedCaller.Invoke(Object[] args)
       at Microsoft.Scripting.Interpreter.CallInstruction.Run(InterpretedFrame frame)
       at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
       at Microsoft.Scripting.Interpreter.LightLambda.Run1[T0,TRet](T0 arg0)
       at IronPython.Compiler.RuntimeScriptCode.InvokeTarget(Scope scope)
       at IronPython.Compiler.RuntimeScriptCode.Run(Scope scope)
       at IronPython.Runtime.PythonContext.InitializeModule(String fileName, ModuleContext moduleContext, ScriptCode scriptCode, ModuleOptions options)
       at IronPython.Runtime.PythonContext.CompileModule(String fileName, String moduleName, SourceUnit sourceCode, ModuleOptions options, ScriptCode& scriptCode)
       at IronPython.Runtime.PythonContext.CompileModule(String fileName, String moduleName, SourceUnit sourceCode, ModuleOptions options)
       at IronPython.Runtime.Importer.LoadFromSourceUnit(CodeContext context, SourceUnit sourceCode, String name, String path)
       at IronPython.Runtime.Importer.LoadModuleFromSource(CodeContext context, String name, String path)
       at IronPython.Runtime.Importer.LoadPackageFromSource(CodeContext context, String name, String path)
       at IronPython.Runtime.Importer.LoadFromDisk(CodeContext context, String name, String fullName, String str)
       at IronPython.Runtime.Importer.ImportFromPathHook(CodeContext context, String name, String fullName, List path, Func`5 defaultLoader)
       at IronPython.Runtime.Importer.ImportFromPath(CodeContext context, String name, String fullName, List path)
       at IronPython.Runtime.Importer.ImportNestedModule(CodeContext context, PythonModule module, String name, List path)
       at IronPython.Runtime.Importer.ImportModuleFrom(CodeContext context, Object from, String name)
       at IronPython.Runtime.Importer.ImportModule(CodeContext context, Object globals, String modName, Boolean bottom, Int32 level)
       at IronPython.Modules.Builtin.__import__(CodeContext context, String name, Object globals, Object locals, Object fromlist, Int32 level)
       at CallSite.Target(Closure , CallSite , CodeContext , Object , String , PythonDictionary , PythonDictionary , PythonTuple )
       at IronPython.Runtime.Importer.Import(CodeContext context, String fullName, PythonTuple from, Int32 level)
       at IronPython.Runtime.Operations.PythonOps.ImportBottom(CodeContext context, String fullName, Int32 level)
       at Microsoft.Scripting.Utils.InvokeHelper`4.Invoke(Object arg0, Object arg1, Object arg2)
       at Microsoft.Scripting.Utils.ReflectedCaller.Invoke(Object[] args)
       at Microsoft.Scripting.Interpreter.CallInstruction.Run(InterpretedFrame frame)
       at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
       at Microsoft.Scripting.Interpreter.LightLambda.Run1[T0,TRet](T0 arg0)
       at IronPython.Compiler.RuntimeScriptCode.InvokeTarget(Scope scope)
       at IronPython.Compiler.RuntimeScriptCode.Run(Scope scope)
       at IronPython.Runtime.PythonContext.InitializeModule(String fileName, ModuleContext moduleContext, ScriptCode scriptCode, ModuleOptions options)
       at IronPython.Runtime.PythonContext.CompileModule(String fileName, String moduleName, SourceUnit sourceCode, ModuleOptions options, ScriptCode& scriptCode)
       at IronPython.Runtime.PythonContext.CompileModule(String fileName, String moduleName, SourceUnit sourceCode, ModuleOptions options)
       at IronPython.Runtime.Importer.LoadFromSourceUnit(CodeContext context, SourceUnit sourceCode, String name, String path)
       at IronPython.Runtime.Importer.LoadModuleFromSource(CodeContext context, String name, String path)
       at IronPython.Runtime.Importer.LoadFromDisk(CodeContext context, String name, String fullName, String str)
       at IronPython.Runtime.Importer.ImportFromPathHook(CodeContext context, String name, String fullName, List path, Func`5 defaultLoader)
       at IronPython.Runtime.Importer.ImportFromPath(CodeContext context, String name, String fullName, List path)
       at IronPython.Runtime.Importer.ImportModule(CodeContext context, Object globals, String modName, Boolean bottom, Int32 level)
       at IronPython.Modules.Builtin.__import__(CodeContext context, String name, Object globals, Object locals, Object fromlist, Int32 level)
       at CallSite.Target(Closure , CallSite , CodeContext , Object , String , PythonDictionary , PythonDictionary , PythonTuple )
       at IronPython.Runtime.Importer.Import(CodeContext context, String fullName, PythonTuple from, Int32 level)
       at IronPython.Runtime.Operations.PythonOps.ImportStar(CodeContext context, String fullName, Int32 level)
       at Microsoft.Scripting.Utils.ActionHelper`3.Invoke(Object arg0, Object arg1, Object arg2)
       at Microsoft.Scripting.Utils.ReflectedCaller.Invoke(Object[] args)
       at Microsoft.Scripting.Interpreter.CallInstruction.Run(InterpretedFrame frame)
       at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
       at Microsoft.Scripting.Interpreter.LightLambda.Run1[T0,TRet](T0 arg0)
       at IronPython.Compiler.RuntimeScriptCode.InvokeTarget(Scope scope)
       at IronPython.Compiler.RuntimeScriptCode.Run(Scope scope)
       at IronPython.Runtime.PythonContext.InitializeModule(String fileName, ModuleContext moduleContext, ScriptCode scriptCode, ModuleOptions options)
       at IronPython.Runtime.PythonContext.CompileModule(String fileName, String moduleName, SourceUnit sourceCode, ModuleOptions options, ScriptCode& scriptCode)
       at IronPython.Runtime.PythonContext.CompileModule(String fileName, String moduleName, SourceUnit sourceCode, ModuleOptions options)
       at IronPython.Runtime.Importer.LoadFromSourceUnit(CodeContext context, SourceUnit sourceCode, String name, String path)
       at IronPython.Runtime.Importer.LoadModuleFromSource(CodeContext context, String name, String path)
       at IronPython.Runtime.Importer.LoadPackageFromSource(CodeContext context, String name, String path)
       at IronPython.Runtime.Importer.LoadFromDisk(CodeContext context, String name, String fullName, String str)
       at IronPython.Runtime.Importer.ImportFromPathHook(CodeContext context, String name, String fullName, List path, Func`5 defaultLoader)
       at IronPython.Runtime.Importer.ImportFromPath(CodeContext context, String name, String fullName, List path)
       at IronPython.Runtime.Importer.ImportModule(CodeContext context, Object globals, String modName, Boolean bottom, Int32 level)
       at IronPython.Modules.Builtin.__import__(CodeContext context, String name, Object globals, Object locals, Object fromlist, Int32 level)
       at CallSite.Target(Closure , CallSite , CodeContext , Object , String , PythonDictionary , PythonDictionary , PythonTuple )
       at IronPython.Runtime.Importer.Import(CodeContext context, String fullName, PythonTuple from, Int32 level)
       at IronPython.Runtime.Operations.PythonOps.ImportWithNames(CodeContext context, String fullName, String[] names, Int32 level)
       at Microsoft.Scripting.Utils.InvokeHelper`5.Invoke(Object arg0, Object arg1, Object arg2, Object arg3)
       at Microsoft.Scripting.Utils.ReflectedCaller.Invoke(Object[] args)
       at Microsoft.Scripting.Interpreter.CallInstruction.Run(InterpretedFrame frame)
       at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
       at Microsoft.Scripting.Interpreter.LightLambda.Run1[T0,TRet](T0 arg0)
       at IronPython.Compiler.RuntimeScriptCode.InvokeTarget(Scope scope)
       at IronPython.Compiler.RuntimeScriptCode.Run(Scope scope)
       at IronPython.Runtime.PythonContext.InitializeModule(String fileName, ModuleContext moduleContext, ScriptCode scriptCode, ModuleOptions options)
       at IronPython.Runtime.PythonContext.CompileModule(String fileName, String moduleName, SourceUnit sourceCode, ModuleOptions options, ScriptCode& scriptCode)
       at IronPython.Runtime.PythonContext.CompileModule(String fileName, String moduleName, SourceUnit sourceCode, ModuleOptions options)
       at IronPython.Runtime.Importer.LoadFromSourceUnit(CodeContext context, SourceUnit sourceCode, String name, String path)
       at IronPython.Runtime.Importer.LoadModuleFromSource(CodeContext context, String name, String path)
       at IronPython.Runtime.Importer.LoadFromDisk(CodeContext context, String name, String fullName, String str)
       at IronPython.Runtime.Importer.ImportFromPathHook(CodeContext context, String name, String fullName, List path, Func`5 defaultLoader)
       at IronPython.Runtime.Importer.ImportFromPath(CodeContext context, String name, String fullName, List path)
       at IronPython.Runtime.Importer.ImportModule(CodeContext context, Object globals, String modName, Boolean bottom, Int32 level)
       at IronPython.Modules.Builtin.__import__(CodeContext context, String name, Object globals, Object locals, Object fromlist, Int32 level)
       at CallSite.Target(Closure , CallSite , CodeContext , Object , String , PythonDictionary , PythonDictionary , PythonTuple )
       at System.Dynamic.UpdateDelegates.UpdateAndExecute6[T0,T1,T2,T3,T4,T5,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
       at IronPython.Runtime.Types.BuiltinFunction.BuiltinFunctionCaller`5.Call4(CallSite site, CodeContext context, TFuncType func, T0 arg0, T1 arg1, T2 arg2, T3 arg3)
       at IronPython.Runtime.Importer.Import(CodeContext context, String fullName, PythonTuple from, Int32 level)
       at IronPython.Runtime.Operations.PythonOps.ImportTop(CodeContext context, String fullName, Int32 level)
       at Microsoft.Scripting.Utils.InvokeHelper`4.Invoke(Object arg0, Object arg1, Object arg2)
       at Microsoft.Scripting.Utils.ReflectedCaller.Invoke(Object[] args)
       at Microsoft.Scripting.Interpreter.CallInstruction.Run(InterpretedFrame frame)
       at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
       at Microsoft.Scripting.Interpreter.LightLambda.Run1[T0,TRet](T0 arg0)
       at IronPython.Compiler.RuntimeScriptCode.InvokeTarget(Scope scope)
       at IronPython.Compiler.RuntimeScriptCode.Run(Scope scope)
       at IronPython.Runtime.PythonContext.InitializeModule(String fileName, ModuleContext moduleContext, ScriptCode scriptCode, ModuleOptions options)
       at IronPython.Runtime.PythonContext.CompileModule(String fileName, String moduleName, SourceUnit sourceCode, ModuleOptions options, ScriptCode& scriptCode)
       at IronPython.Runtime.PythonContext.CompileModule(String fileName, String moduleName, SourceUnit sourceCode, ModuleOptions options)
       at IronPython.Runtime.Importer.LoadFromSourceUnit(CodeContext context, SourceUnit sourceCode, String name, String path)
       at IronPython.Runtime.Importer.LoadModuleFromSource(CodeContext context, String name, String path)
       at IronPython.Runtime.Importer.LoadPackageFromSource(CodeContext context, String name, String path)
       at IronPython.Runtime.Importer.LoadFromDisk(CodeContext context, String name, String fullName, String str)
       at IronPython.Runtime.Importer.ImportFromPathHook(CodeContext context, String name, String fullName, List path, Func`5 defaultLoader)
       at IronPython.Runtime.Importer.ImportFromPath(CodeContext context, String name, String fullName, List path)
       at IronPython.Runtime.Importer.ImportTopAbsolute(CodeContext context, String name)
       at IronPython.Runtime.Importer.ImportModule(CodeContext context, Object globals, String modName, Boolean bottom, Int32 level)
       at IronPython.Modules.Builtin.__import__(CodeContext context, String name, Object globals, Object locals, Object fromlist, Int32 level)
       at Microsoft.Scripting.Utils.InvokeHelper`7.Invoke(Object arg0, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5)
       at Microsoft.Scripting.Utils.ReflectedCaller.Invoke(Object[] args)
       at Microsoft.Scripting.Actions.Calls.MethodCandidate.Caller.Call(Object[] args, Boolean& shouldOptimize)
       at IronPython.Runtime.Types.BuiltinFunction.BuiltinFunctionCaller`5.Call4(CallSite site, CodeContext context, TFuncType func, T0 arg0, T1 arg1, T2 arg2, T3 arg3)
       at IronPython.Runtime.Importer.Import(CodeContext context, String fullName, PythonTuple from, Int32 level)
       at IronPython.Runtime.Operations.PythonOps.ImportTop(CodeContext context, String fullName, Int32 level)
       at Microsoft.Scripting.Utils.InvokeHelper`4.Invoke(Object arg0, Object arg1, Object arg2)
       at Microsoft.Scripting.Utils.ReflectedCaller.Invoke(Object[] args)
       at Microsoft.Scripting.Interpreter.CallInstruction.Run(InterpretedFrame frame)
       at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
       at Microsoft.Scripting.Interpreter.LightLambda.Run2[T0,T1,TRet](T0 arg0, T1 arg1)
       at IronPython.Compiler.PythonScriptCode.RunWorker(CodeContext ctx)
       at IronPython.Compiler.PythonScriptCode.Run(Scope scope)
       at IronPython.Compiler.RuntimeScriptCode.InvokeTarget(Scope scope)
       at IronPython.Compiler.RuntimeScriptCode.Run(Scope scope)
       at Microsoft.Scripting.SourceUnit.Execute(Scope scope, ErrorSink errorSink)
       at Microsoft.Scripting.Hosting.ScriptSource.Execute(ScriptScope scope)
       at STKinterpreter.PyEngine.ExecuteStatement(String statement) in D:\Documents and Settings\demarep\My Documents\Visual Studio 2008\Projects\STKinterpreter\STKinterpreter\PyEngine.cs:line 97
    

    据我所知我的系统。路径有正确的目录。我还应该调查什么?

    2 回复  |  直到 14 年前
        1
  •  4
  •   λ Jonas Gorauskas    14 年前

    你可以尝试以下几件事:

    1. 确保已设置IRONPYTHONPATH系统变量 正确地找到 努比 单元大部分时间都是安装的 在CPython目录结构中,因此需要添加 下面列出的路径。

    2. 作为替代方案,您可以尝试设置 sys.path 在代码中,动态地。

    假设您已经安装了CPython 2.6系列,以下是您应该研究的路径:

    • C:\Python26\dll
    • C:\Python26\Lib
    • C:\Python26\Lib\site包
        2
  •  0
  •   Javi Roman    13 年前

    我尝试了以上所有方法,但只有当我将项目移动到“有效”路径时,才奏效。这是一个没有空格的字符。我想知道这是否是因为铁甲的支持不佳。

    推荐文章