2017-08-09 1 views
0

J'ai rencontré un problème lorsque je suis passé de python 2.7 à python 3.3. J'ai utilisé spyderlib mais maintenant il met à jour vers spyder. Par conséquent, j'ai revu mon code pour enregistrer toutes les variables en données de spydata comme ci-dessous:Utiliser la bibliothèque spyder pour enregistrer toutes les variables dans le fichier spydata

from spyder.utils.iofuncs import save_dictionary 
def variablesfilter(): 
    from spyder.widgets.variableexplorer.utils import globalsfilter 
    from spyder.plugins.variableexplorer import VariableExplorer 
    from spyder.config.base import get_conf_path, get_supported_types 

    data = globals() 
    settings = VariableExplorer.get_settings() 

    get_supported_types() 
    data = globalsfilter(data,     
         check_all=True, 
         filters=tuple(get_supported_types()['picklable']), 
         exclude_private=settings['exclude_private'], 
         exclude_uppercase=settings['exclude_uppercase'], 
         exclude_capitalized=settings['exclude_capitalized'], 
         exclude_unsupported=settings['exclude_unsupported'], 
         excluded_names=settings['excluded_names']+['settings','In']) 
    return data 

def saveglobals(filename): 
    data = variablesfilter() 
    save_dictionary(data,filename) 


savepath = 'memory.spydata' 
saveglobals(savepath) 

Cependant, il jette notre erreur comme ci-dessous:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Users\jialiang.shen\AppData\Local\Continuum\Anaconda3_new\lib\site-packages\spyder\utils\site\sitecustomize.py", line 880, in runfile 
    execfile(filename, namespace) 
    File "C:\Users\jialiang.shen\AppData\Local\Continuum\Anaconda3_new\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile 
    exec(compile(f.read(), filename, 'exec'), namespace) 
    File "C:/Users/jialiang.shen/temp/s1.py", line 37, in <module> 
    saveglobals(savepath) 
    File "C:/Users/jialiang.shen/temp/s1.py", line 32, in saveglobals 
    data = variablesfilter() 
    File "C:/Users/jialiang.shen/temp/s1.py", line 18, in variablesfilter 
    settings = VariableExplorer.get_settings() 
TypeError: get_settings() missing 1 required positional argument: 'self' 

Cette erreur doit être originaire de la mise à niveau de la bibliothèque spyderlib à spyder. Est-ce que quelqu'un peut m'aider? Merci beaucoup!

Répondre

0

Je pense que vous devez instancier classe VariableExplorer:

settings = VariableExplorer(None).get_settings() 
+0

J'ai essayé cette méthode, mais python me écrasé après avoir fait ce changement. Des pensées? – David