2010-03-01 11 views
3

A partir d'une console ipy je peuxImpossible d'importer numpy dans le moteur de IronPython embarqué

import ironclad 
import numpy 

sans problème. Toutefois, lorsque j'essaie les mêmes importations avec un interpréteur incorporé, l'importation chiffrée échoue. Mes moteurs Python est configuré comme ceci:

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; 
    } 

Et j'exécutent des déclarations comme celle-ci:

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); 
      } 
     } 
    } 

Les tirages d'exception ce message:

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 

Pour autant que je peux dire mon sys.path a les répertoires corrects. Que devrais-je regarder d'autre?

Répondre

4

Il y a un certain nombre de choses que vous pouvez essayer:

  1. Assurez-vous que vous avez configuré le système de IRONPYTHONPATH variables correctement pour trouver le numpy Module. La plupart du temps, est installé dans la structure de votre répertoire CPython. Vous devez donc ajouter les chemins répertoriés ci-dessous. Comme alternative, vous pouvez essayer de définir dynamiquement le sys.path dans votre code.

En supposant que vous avez CPython série 2.6 installé, ce sont les chemins que vous devriez regarder dans:

  • C: \ Python26 \ dlls
  • C: \ Python26 \ Lib
  • C : \ Python26 \ Lib \ site-packages
0

J'ai essayé tout ce qui précède, mais cela n'a fonctionné que lorsque j'ai déplacé le projet vers un chemin "valide". C'est un sans caractères d'espace. Je me demande si c'est à cause du médiocre soutien UNICODE de fer blindé.

Questions connexes