0

我在使用 PyYAML 转储和加载 YAML 文件时遇到问题。

我有两个分开的应用程序 A 和 B。我想在 A 中转储一个 YAML 文件,然后加载它并在 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 中的方法,但它仍然给出相同的结果。

如何处理?谢谢。

4

1 回答 1

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_moduleor在 B 中导入import B-folder.the_module,即使您在同一个文件夹中,它也应该可以解决问题。

于 2012-12-22T09:57:25.400 回答