##概要
Wikipediaのデータセットから文章を抽出しようとした際に
Import: attemted relative import with no known parent package
上記のエラーが起こりました。
ちなみに、[Pythonのクローリング&スクレイピングの解説書](URL https://gihyo.jp/book/2019/978-4-297-10738-3)の5.1.1「Wikipediaのデータセットから文章を抽出する」をやっている最中に躓いたので、上記の本で詰まった方の参考にもなるかもしれません。
##経緯
まず、WikiExtractorをダウンロード。
$ git clone https://github.com/attardi/wikiextractor.git
WIkipediaのデータセットから文章を抽出
$ python wikiextractor/wikiextractor/WikiExtractor.py --no-templates -o <出力先のディレクトリ> -b <分割するファイルのサイズ> <抽出するダンプファイル名>
ここでエラー
Traceback (most recent call last):
File "wikiextractor/wikiextractor/WikiExtractor.py", line 66, in <module>
from .extract import Extractor, ignoreTag, define_template, acceptedNamespaces
ImportError: attempted relative import with no known parent package
調べたところ
既知の親パッケージがない状態で相対インポートを試みました
ということらしいが意味はいまいちわからず。
##解決策
WikiExtractorのREADMEによるとpipで導入可能らしい。先ほどgitでダウンロードしてしまったので削除し、改めてpipでインストールする。
$ pip install wikiextractor
モジュールなので
python -m wikiextractor.WikiExtractor <ダンプファイル名> --no-templates -o <出力先のディレクトリ> -b <分割するファイルのサイズ>
-m
でモジュールを指定して実行する。
##まとめ
pipでモジュールとしてインストールするとエラーが起こることなく実行できました。
gitでダウンロード→実行の場合だとなぜエラーが出るのかわかる方おりましたら、コメントしていただければ幸いです。