【发布时间】:2019-08-22 01:04:11
【问题描述】:
在将this snippet 集成到脚本中时,我想更改:
import pywikibot
from pywikibot import pagegenerators
site = pywikibot.Site("wikidata", "wikidata")
repo = site.data_repository()
sparql = "SELECT ?item WHERE { ?item rdfs:label 'Google'@en }"
entities = pagegenerators.WikidataSPARQLPageGenerator(sparql, site=repo)
到:
import pywikibot
site = pywikibot.Site("wikidata", "wikidata")
repo = site.data_repository()
sparql = "SELECT ?item WHERE { ?item rdfs:label 'Google'@en }"
entities = pywikibot.pagegenerators.WikidataSPARQLPageGenerator(sparql, site=repo)
(即尝试将导入合并为一个)但它给了我一个错误:
AttributeError: module 'pywikibot' has no attribute 'pagegenerators'
(在我的桌面和云中的 Jupyter 笔记本上出现同样的错误)
我错过了什么?
【问题讨论】:
-
@Aran-Fey 谢谢,我猜它已经被问过了,但找不到。
-
pagegenerators 确实是一个子模块,但这还不是全部。由 pywikibot 模块的 _init_.py 文件决定将哪些内容直接导入默认命名空间。许多顶级模块将通过在其 _init.py_ 文件中为您执行 import
将其子模块导入全局命名空间。这可能就是您期望这种行为的原因。这并不罕见,因为模块实际上已经为您完成了第二次导入。然而,在这种情况下,pywikibot 的 _init_.py 并没有这样做,所以你必须自己做。
标签: python python-import