2012-10-09 81 views
0

我在使用PyYAML轉儲和加載YAML文件時遇到問題。PyYAML轉儲對象路徑

我有兩個分離的應用程序A和B.我想轉儲一個YAML文件在A中,並稍後加載它並在B中使用它。但對象的路徑似乎不正確。

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

在dump.py,我有這樣的代碼:

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

它給出了一個YAML文件:

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

然後,我需要使用use.py.這個YAML文件但是我無法正確加載它作爲the_module.the_module.the_class的一個實例。它說:

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

我試圖做的另一個模塊B-folder.adaptor傾倒,在dump.py它只是調用B-folder.adaptor的方法,但它仍然給出了同樣的結果。

如何處理?謝謝。

回答

1

這裏的問題是沒有什麼實際的PyYAML,它與Python的模塊加載。

在A中,我假設您正在導入the_module作爲B文件夾包的一部分,可以使用import B-folder.the_modulefrom B-folder import the_module。在這種情況下,模塊名稱是B-folder.the_module。正如你所看到的,這會被放入YAML文件中。

在B中,我假設你只是在內部導入the_module,類似import the_module。在這種情況下,模塊名稱是the_module。這與B-folder.the_module不一樣,這就是你得到錯誤的原因。如果您使用from B-folder import the_moduleimport B-folder.the_module而不是B導入,即使您位於同一個文件夾中,也應該可以解決問題。