AttributeError模块'Pyro4'没有属性'expose'而运行gensim分布式LSI

AttributeError module 'Pyro4' has no attribute 'expose' while running gensim distributed LSI

所以我正在尝试 运行 来自 gensim 的分布式 LSI 演示(您可以找到它 here)但是每当我 运行 代码时我都会收到错误

AttributeError: module 'Pyro4' has no attribute 'expose'

我在Whosebug上查过类似的问题,一般都是误用库造成的。

不过我并没有直接使用Pyro4,而是使用了gensim引入的Distributed LSI。所以我这边没有犯错的余地(或者我相信)

我的代码真的很简单,你可以在下面找到它

from gensim import corpora, models, utils
import logging, os, Pyro4
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
os.environ["PYRO_SERIALIZERS_ACCEPTED"] =  'pickle'
os.environ["PYRO_SERIALIZER"] = 'pickle'

corpus = corpora.MmCorpus('wiki_corpus.mm') # load a corpus of nine documents, from the Tutorials
id2word = corpora.Dictionary.load('wiki_dict.dict')

lsi = models.LsiModel(corpus, id2word=id2word, num_topics=200, chunksize=1, distributed=True) # run distributed LSA on nine documents

Pyro4.expose 于 2014 年 8 月添加到 Pyro4 4.27 版中。 在我看来,您在此日期之前安装了 非常 旧的 Pyro4 版本,并且您的 gensim 需要更新的版本。

检查使用:

$ python -m Pyro4.configuration | head -3

您可能应该升级您的 Pyro4 库... 不过请注意,我相信 gensim 不支持最新版本的 Pyro4,因此您可能应该查看其手册以了解您需要的正确版本。您可以随时尝试安装最新版本(现在是 4.61),看看效果如何。

edit 我想您也可以尝试寻找 gensim 特定支持? https://radimrehurek.com/gensim/support.html