2009-09-24 20 views
7

que celebro mi IronPython en una aplicación web C#, así:No se puede utilizar DateTime en IronPython

var engine = Python.CreateEngine(); 
var scope = engine.CreateScope(); 
var script = Engine.CreateScriptSourceFromString(pythonCode, SourceCodeKind.Statements); 
script.Execute(scope); 

Y mi código Python se ve así:

import clr 
clr.AddReference('System.Core') 

from System import DateTime 
theDate = DateTime.Today() 

que genera este error:

IronPython.Runtime.Exceptions.ImportException: Cannot import name DateTime 

Pasé algún tiempo en Google y la mayoría del código que encontré ya no parece funcionar.

Mi versión de IronPython Runtime es v2.0.50727 - ¿Debería actualizar? Aunque hubiera pensado que DateTime hubiera estado desde las primeras puertas.

+0

¿Cuál es exactamente el mensaje de error que le da? ¿Python utiliza corchetes en las propiedades? (Si no, intente 'DateTime.Today'.) –

+0

2.0.50727 suena como un número de versión de CLR en lugar de un número de versión de IronPython, por cierto. ¿Qué versión aparece si solo ejecutas ipy? –

Respuesta

11

Trate de añadir una referencia a mscorlib en lugar de System.Core. Cambiamos el comportamiento de alojamiento predeterminado en algún momento (2.0.1? 2.0.2?) Para que esto se haga de manera predeterminada cuando se aloja. Puede hacerlo desde su código de host con:

engine.Runtime.LoadAssembly(typeof(string).Assembly); 
+0

Gracias, eso fue perfecto. – littlecharva

9

Acabo de marcar, y el problema es que está tratando de llamar a Today como un método en lugar de una propiedad. Tal vez puedas probar (sin necesidad de añadir una referencia a System.Core):

import clr 
from System import DateTime 
theDate = DateTime.Today 
print theDate 
+0

Al analizar la pregunta, el error parece provenir de una falla de importación, en lugar del hecho de que se llama a "Hoy" como una función. – Rohit

+0

@Rohit: Realmente no podemos decirlo, ya que no nos han dicho cuál es el mensaje de error. Con los corchetes en * haz * un * mensaje de error ... –

+0

La excepción fue disparar en el comando de importación, por lo que ni siquiera había llegado a la llamada Hoy. Gracias de todos modos por su ayuda. – littlecharva

Cuestiones relacionadas