Hi, I'm trying to execute the following code:<br><pre><span class="n">d</span> <span class="o">=</span> <span class="p">{}</span><br><span class="k">exec</span><span class="p">(</span><span class="s">'import cPickle'</span><span class="p">)</span> <span class="ow">in</span> <span class="n">d</span><br>
<span class="n">desc</span> <span class="o">=</span> <span class="s">"""</span><br><span class="s">class A(object):</span><br><span class="s"> pass</span><br><span class="s">"""</span><br>
<span class="k">exec</span><span class="p">(</span><span class="n">desc</span><span class="p">)</span> <span class="ow">in</span> <span class="n">d</span><br><br><span class="k">exec</span><span class="p">(</span><span class="s">'a = A()'</span><span class="p">)</span> <span class="ow">in</span> <span class="n">d</span><br>
<span class="k">exec</span><span class="p">(</span><span class="s">'cPickle.dump(a, open("tmp.txt","wb"))'</span><span class="p">)</span><span class="ow">in</span> <span class="n">d</span><br><br>
for some reason it fails with the following traceback:<br></pre><pre><span class="gt">Traceback (most recent call last):</span><br> File <span class="nb">"pickleTest.py"</span>, line <span class="m">10</span>, in <span class="n-Identifier"><module></span><br>
<span class="k">exec</span><span class="p">(</span><span class="s">'cPickle.dump(a, open("tmp.txt","wb"))'</span><span class="p">)</span><span class="ow">in</span> <span class="n">d</span><br>
File <span class="nb">"<string>"</span>, line <span class="m">1</span>, in <span class="n-Identifier"><module></span><br><span class="nc">cPickle.PicklingError: Can't pickle <class 'A'></span>: <span class="n-Identifier">attribute lookup __builtin__.A failed</span><br>
<br>pickle also dosen't work, changing protocol dosen't seem to help. <br><br>it works when i do:<br><br>exec('import __builtin__') in d<br>exec('__builtin__.A = A') in d<br><br>but it pollutes builtin namespace, which I don't like. <br>
<br>May be there is a workaround, how to do this correctly?<br>Thanks in advance,<br>Boris. <br><br><br></pre>