使用pybtex和python3将bibtex转换为html

使用pybtex和python3将bibtex转换为html,python,html,python-3.x,bibtex,Python,Html,Python 3.x,Bibtex,我想获取一个包含一个或多个bibtex条目的文件,并将其输出为html格式的字符串。具体的风格不是很重要,但我们只说APA。基本上,由于我在Django中工作,所以我需要but的功能和Python API。有几个人提出了类似的问题和建议。我还找到了一个可能的解决方案 我遇到的第一个问题是非常基本的,我甚至不能运行上面的解决方案。我不断收到类似于ModuleNotFoundError的错误:没有名为'pybtex.database'的模块;'pybtex'不是一个包。我肯定已经安装了pybtex,

我想获取一个包含一个或多个bibtex条目的文件,并将其输出为html格式的字符串。具体的风格不是很重要,但我们只说APA。基本上,由于我在Django中工作,所以我需要but的功能和Python API。有几个人提出了类似的问题和建议。我还找到了一个可能的解决方案

我遇到的第一个问题是非常基本的,我甚至不能运行上面的解决方案。我不断收到类似于
ModuleNotFoundError的错误:没有名为'pybtex.database'的模块;'pybtex'不是一个包
。我肯定已经安装了pybtex,可以在shell中进行基本API调用,没有问题,但是每当我尝试导入pybtex.database.whatever或pybtex.plugin时,我总是会发现
moduleNotFind
错误。这可能是Python2和Python3的较量吗?我用的是后者

第二个问题是,我在理解pybtex python API时遇到了困难。具体地说,从我所知道的来看,字符串中的
format\u和文件中的
format\u
调用是专门为我想做的事情而设计的,但我似乎无法获得正确的语法。具体来说,当我这样做的时候

pybtex.format_from_file('foo.bib',style='html')

我得到
pybtex.plugin.PluginNotFound:plugin pybtex.style.formatting.html未找到
。我想我只是不明白这个调用应该如何工作,我也找不到任何正确的例子。

我为一个类似的用例编写了一个函数——将参考书目合并到Pelican生成的网站中

from pybtex.plugin import find_plugin
from pybtex.database import parse_string
APA = find_plugin('pybtex.style.formatting', 'apa')()
HTML = find_plugin('pybtex.backends', 'html')()

def bib2html(bibliography, exclude_fields=None):
    exclude_fields = exclude_fields or []
    if exclude_fields:
        bibliography = parse_string(bibliography.to_string('bibtex'), 'bibtex')
        for entry in bibliography.entries.values():
            for ef in exclude_fields:
                if ef in entry.fields.__dict__['_dict']:
                    del entry.fields.__dict__['_dict'][ef]
    formattedBib = APA.format_bibliography(bibliography)
    return "<br>".join(entry.text.render(HTML) for entry in formattedBib)
pybtex==0.22.2
pybtex-apa-style==1.3