gpt4 book ai didi

python - 在 __init__.py 中初始化 yaml 模块

转载 作者:太空宇宙 更新时间:2023-11-03 17:29:56 27 4
gpt4 key购买 nike

我正在使用 PyYAML,并且希望能够在我的 .yaml 文件中使用字符串连接构造函数。

This post展示了如何将此类构造函数添加到 PyYAML:

import yaml

## define custom tag handler
def join(loader, node):
seq = loader.construct_sequence(node)
return ''.join([str(i) for i in seq])

## register the tag handler
yaml.add_constructor('!join', join)

当我在 python 终端中输入上面的内容时,它就起作用了。但是,我想将上述内容放入 my_package__init__.py 文件中,以便我可以执行以下操作:

from my_package import yaml  # my_package.__init__.py contains the above code

yaml.load("""
user_dir: &DIR /home/user
user_pics: !join [*DIR, /pics]
""")

但是,这会崩溃并显示以下消息:

AttributeError                            Traceback (most recent call last)
<ipython-input-1-1107dafdb1d2> in <module>()
----> 1 import simplelearn.yaml

/home/mkg/projects/simplelearn/simplelearn/__init__.py in <module>()
----> 1 import yaml
2
3 def __join(loader, node):
4 '''
5 Concatenates a sequence of strings.

/home/mkg/projects/simplelearn/simplelearn/yaml.pyc in <module>()

AttributeError: 'module' object has no attribute 'add_constructor'

发生什么事了?为什么python找不到yaml.add_constructor

最佳答案

您从文件加载模块yaml:

/home/mkg/projects/simplelearn/simplelearn/yaml.pyc

您可以将自己的文件之一命名为yaml.py,或者您确实拥有该文件之前并重命名它,但忘记删除 yaml.pyc。因此,您没有使用 import yaml 加载 PyYAML 解释器。

最简单的验证方法是在导入后包含一个临时行:

import yaml
print(yaml.__file__)

应该看到类似.../site-packages/yaml/__init__.pyc的内容。

关于python - 在 __init__.py 中初始化 yaml 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32027099/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com