1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python3.7のWikiExtractor3.0.4で起こるImportError: attempted relative import with no known parent packageを解決する

Last updated at Posted at 2021-02-26

##概要
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でダウンロード→実行の場合だとなぜエラーが出るのかわかる方おりましたら、コメントしていただければ幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?