2012-10-09 2 views
0

Je rencontre un problème lors du vidage et du chargement des fichiers YAML à l'aide de PyYAML.Chemin de l'objet de vidage PyYAML

J'ai deux applications séparées A et B. Je voudrais vider un fichier YAML dans A, et le charger plus tard et l'utiliser dans B. Mais le chemin des objets semble incorrect.

A-folder 
    dump.py 
B-folder 
    the_module.py 
    use.py 

En dump.py, je code comme:

yaml.dump(the_class_instance, file_stream, default_flow_style=False) 

Il donne un fichier YAML:

!!python/object:B-folder.the_module.the_class 
attribute_0: !!python/long '10' 
attribute_1: !!python/long '10' 

Puis-je utiliser ce fichier YAML dans use.py. Mais je ne peux pas le charger correctement comme une instance de the_module.the_module.the_class. Il dit:

cannot find module 'B-folder.the_module' (No module named B-folder.the_module) 

J'ai essayé de faire le dumping dans un autre module B-folder.adaptor, en dump.py il appelle simplement les méthodes B-folder.adaptor, mais il donne toujours le même résultat.

Comment faire avec? Merci.

Répondre

1

Le problème ici n'est pas réellement avec PyYAML, c'est avec le chargement de module de Python. Dans A, je suppose que vous importez the_module dans le package B-dossier, soit avec import B-folder.the_module ou from B-folder import the_module. Dans ce cas, le nom du module est B-folder.the_module. Cela est mis dans le fichier YAML, comme vous pouvez le voir. Dans B, je suppose que vous importez simplement le module en interne, avec quelque chose comme import the_module. Dans ce cas, le nom du module est the_module. Ce n'est pas la même chose que B-folder.the_module, c'est pourquoi vous obtenez l'erreur. Si vous avez plutôt importé dans B en utilisant from B-folder import the_module ou import B-folder.the_module, même si vous êtes dans le même dossier, cela devrait résoudre le problème.