0
0

More than 3 years have passed since last update.

pycharm+beautifulsoupでModuleNotFoundError

Posted at

今回の結論|pycharmのインタプリタ設定からパッケージインストールで解決

pycharmのインタプリタ設定の確認。
preferences → Project → project interpreter

ここで画像下のプラスボタンからパッケージをインストールしたら
pycharm内のプロジェクトから読み込め、実行できるようになりました。

注意:pycharmプロジェクトごとにこのpythonエンジン、パッケージは設定できるため
   他のプロジェクトでは再度設定する必要がある場合もある。

状況

スクレイピングをやる前にDjangoの本を進めていたり
pythonのテストをしたりといくつかよくわからないままに
仮想環境ができている状態でさらにpycharmを導入したばかり。

beautifulsoupというスクレイピングのライブラリを使おうとしたら
ModuleNotFoundErrorがでた。
何段階かでハマったのでメモしております。

pycharmでどのpythonを使っているのかを確認

まずは大前提としてpythonのエンジン
python2.7とかpython3.6とかを
同時にPCにインストールできる。
大変便利な機能でありますが初心者のうちはハマりどころでもあります。
「現在どのpythonエンジンを使用しているのか」
を確認する必要があります。
バージョンが違えば動かないプログラムもあるし
インストールされているパッケージも変わったりします。

今回のModuleNotFoundErrorはまさにこれが原因でした。

pip listでは出てくるのに

今回ハマったポイントその2として

piplist.sh

pip list
beautifulsoup4    4.6.0

pip listコマンドでは出てくるが
pycharmからは参照できていないという現象。

これも原因としてpythonのエンジン(仮想環境)が
pycharmの設定に反映されていなかったのが原因。

importした時にどのディレクトリが読まれているかを確認

import.py

import sys
import pprint
pprint.pprint(sys.path)

このimport.pyをpycharm内の現在のプロジェクトで実行すると
importと書いた時に読みに行っているディレクトリを表示してくれる。
案の定beautifulsoupはなかった。

参考:python初心者がimportエラー(ModuleNotFoundError)で詰みかけた話

モジュール名の変幻

他の言語、フレームワークでもあるあるだと思いますが
インストールする時と使う時で名前が違うというもの。

install.sh

pip install beautifulsoup4

import.py

from bs4 import BeautifulSoup

今回の正解は依存しているパッケージの記載+アッパーキャメルケースでした。
これは下記の参考図書にも詳しく書いてくれておりわかりやすかったです。
qiitaの記事にも再びお世話になりました。ありがとうございます。
参考図書:Python2年生 スクレイピングのしくみ 体験してわかる!会話でまなべる!
参考:python初心者がimportエラー(ModuleNotFoundError)で詰みかけた話

備考|pythonの仮想環境

今回のハマりポイントとしてpythonの開発環境が個人的にはネックとなりました。
これまでvirtual boxでの開発環境を触ってきた経験があり
最近Dockerを触っている状態だったのですが、
pythonの仮想環境の印象としてはDockerに近いと感じました。
自分も理解が浅いためざっくり書くと
virtual boxはsshで接続する
python、dockerはプロセスを管理している
というようなイメージでした。

0
0
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
0
0