2017-07-09 45 views
0

我写了下面的代码,但我得到了酸洗错误。我不知道什么是错误的。在Sympy模块中的python代码PicklingError

x = Symbol('x') 
    y = Symbol('y') 

    f = Function('f')(x) 
    h = Function('h')(x) 

    g = Function('g')(y) 
    t = Function('t')(y) 
    X1 = f + g 
    X2 = h * t 
    E = 1 + (f.diff(x)) ** 2 + (f.diff(x) * g) ** 2 
    F = f.diff(x) * g.diff(y) + f.diff(x) * g.diff(y) * f * g 
    G = 1 + (g.diff(y)) ** 2 + (f * g.diff(y)) ** 2 

    MainD = 2 * (E * G - F ** 2) 
    with open('M.pickle', 'wb') as outf: 
    outf.write(pickle.dumps(MainD)) 

,我得到了以下错误消息:

Can not pickle f: it is not the same object as _main_ .f 
+0

请提一下你得到的picklng错误类型。另外提供errortrace有助于发现问题。 – Mani

+0

@Mani我添加了错误。 – Baghban

回答

1

pickle甚至dill没有人有Sympy完整的兼容性。但是,您可以将输出转换为字符串,然后在txt文件中写入/读取。以下是基于您的代码的示例。

Str_MainD = str(MainD) 
with open('M.py', 'w') as file: 
    file.write(Str_MainD) 

现在,

with open('M.py', 'r') as file: 
    Read_From_File = file.read() 

您可以在另一个脚本读取它(如果第二脚本由一些Simpy码操作,使用eval(file.read())代替)。