質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

解決済

2回答

983閲覧

Python3でのモジュールインポート時エラーについて

t-yossi

総合スコア1

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

0グッド

0クリップ

投稿2021/06/13 09:45

前提・実現したいこと

pythonを独学中の者です。『独学プログラマー』(コーリー・アルソフ著)
に従い、Googleニュースをスクレイピングするプログラムを作成しています。
コマンドプロンプトでBeautifulSoupをインストールし、「from bs4 import
Beautifulsoup」でbs4モジュールをインポートしようとしましたが、
以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

ModuleNotFoundError: No module named 'bs4'

該当のソースコード

python3

1import urllib.request 2from bs4 import BeautifulSoup 3 4 5class Scraper: 6 def __init__(self, site): 7 self.site = site 8 9 def scrape(self): 10 r = urllib.request.urlopen(self.site) 11 html = r.read() 12 parser = 'html.parser' 13 sp = BeautifulSoup(html, parser) 14 for tag in sp.find_all('a'): 15 url = tag.get('href') 16 if url is None: 17 continue 18 if 'html' in url: 19 print('\n' + url) 20 21 22news = 'https://news.google.com/' 23Scraper(news).scrape()

試したこと

エディタ(VSCode)で動かそうとしているPythonのバージョンが
インストールされているものと異なっていたため、バージョンを
揃えましたが、VSCodeではインタプリタを更新する設定がうまく
いかなかったので開発環境をPyCharmに変更しました。
また、色々と調べた上で、モジュールがインストールされていることを
コマンドプロンプト「pip show beautifulsoup4」により確認し、
Location「c:\users\anaconda3\lib\site-packages」にあったため、
Pythonで「import sys」「sys.path.append()」メソッドにより上記
パスを追加しました。
しかしながら、依然としてVSCode・PyCharm両方で実行しても同様の
ModuleNotFoundエラーとなってしまいます。
モジュールインポートのエラーについて書籍やネット上にはあまり
まとまった対処法が載っていないため、断片的な、あるいは的外れな
対処になっているのかもしれません。
VBA程度しかプログラミング経験がなく、コマンドラインの使用方法
についても手探りなので、うまく状況を伝えられないのですが、
知恵をお貸しいただけると幸いです。

補足情報(FW/ツールのバージョンなど)

OS:Microsoft Windows [Version 10.0.19042.985]
Pythonのバージョン:Python3.9.5
開発環境:VSCode、PyCharm(Community)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2021/06/13 09:57

> エディタ(VSCode)で動かそうとしているPythonのバージョンがインストールされているものと異なっていたため、バージョンを揃えましたが お使いのPCに「複数のPythonがインストールされている」状態なのでしょうか?
t-yossi

2021/06/13 11:07

Pythonをインストールしたのは2021年2月頃なので、Python3.9以前のものはインストールしたことがありません。質問のエラーが出た直後にVSCodeでバージョン確認したところ、Python3.8.5となっていたので、vscodeの設定pythonpathで自分のPCの参照先パスを入れたところ、Python3.9.1が表示されるようになりました。 インストールは一度しか行っていないので、複数入っていることはないかと思います。
meg_

2021/06/13 11:19

ppaulさんの回答へのコメントを見ました。Windowsアプリストアから導入したPythonと(公式から?)インストールしたPythonがPCに入っているようですね。 BeautifulSoupをインストールしたPythonとスクリプトを実行しようとしているPythonが別物なのでエラーが出ていると推察されます。Windowsアプリストアから導入したPythonの方を削除されてはいかがでしょうか?(アンインストールは自己責任でお願いします)
jbpb0

2021/06/13 12:59 編集

> インストールは一度しか行っていないので、複数入っていることはない Pythonが三つ入ってる > 「pip show beautifulsoup4」により確認し、 Location「c:\users\anaconda3\lib\site-packages」にあった c:\users\anaconda3\… にAnaconda版 > コマンドプロンプト>pthon3およびPyCharm: C:\Users\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\python.exe C:\Users\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\… にMicrosoft版 > VSCode:C:\Users\AppData\Local\Programs\Python\Python39\python.exe C:\Users\AppData\Local\Programs\Python\… に公式版 pipで入れたBeautifulSoupは現状Anaconda版Pythonに入ってるので、Microsoft版や公式版のPythonではimportできません 環境を整理しないと、今回は(対処療法で)乗り越えられても、いずれまたハマりますよ
t-yossi

2021/06/14 03:38

>meg_さん、jbpb0さん ご丁寧に確認・ご指導いただきありがとうございました。 ご指導のとおり、インストール履歴を確認したところ、学習教材を変えた際にVSCodeやAnacondaなどツールを変えており、その際に拡張設定だけでなくPython自体もインストールしていたようです。 初歩的なミスで大変お騒がせいたしました。 meg_さんの言われた通り、最新版以外をアンインストールし、バージョン整合を確認した上で再度実行したところ、正しくインポートされました。 jbpb0さんからアドバイスいただいたように、今後は常に環境を整理の上で進めるようにします。 非常に初歩的な誤りでしたが、環境構築の重要さといった意味で大変勉強になりました。 どうもありがとうございました。
guest

回答2

0

pipは入れていますか?

pip install bs4

で解決するかと思います。

投稿2021/06/13 11:08

goto_yuta_

総合スコア211

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t-yossi

2021/06/14 03:41

ご回答ありがとうございます。 他の方から回答・コメントいただいていたように、バージョンの不整合が原因でした。 ご教示いただいた通りpipでのインストールも正常にできました。
guest

0

ベストアンサー

「import sys」「sys.path.append()」メソッドにより上記パスを追加しました。
はやってはダメです。不整合が発生します。

まず、どのPythonなのかを確認しましょう。

python

1import sys 2print(sys.executable)

を、

1 コマンドプロンプトでBeautifulSoupをインストールしのコマンドプロンプトで起動したPython 
2 VSCode
3 PyCharm

でそれぞれ実行して比較してください。

投稿2021/06/13 10:00

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t-yossi

2021/06/13 10:55

ご回答ありがとうございます。 ご教示いただいたコマンドで比較してみました。 コマンドプロンプト>pthon3およびPyCharm: C:\Users\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\python.exe VSCode:C:\Users\AppData\Local\Programs\Python\Python39\python.exe となりましたので、同じバージョンと思われます。
ppaul

2021/06/14 02:52

Pythonはバージョンが同じでも、別のディレクトリにインストールされているものは別物です。 Pythonのライブラリは、原則としてそれぞれのPythonのディレクトリの下にインストールされます。 pipやcondaでインストールされるライブラリをsys.path.append()で他のPythonから読み込むことは危険です。sys.path.append()を使うのは自作のライブラリを使うときに限定しましょう。 次は、コマンドプロンプトでPythonを起動して、そこで >>> from bs4 import BeautifulSoup を実行した場合にエラーが出ないことを確認してください。
t-yossi

2021/06/14 03:44

ご丁寧に教えていただき、誠にありがとうございました。 Pythonのバージョンや実行ディレクトリに関して理解しておらず、初歩的な質問となり申し訳ありませんでした。 コマンドラインでの確認やsys.path.appennd()の正しい使い方など、大変勉強になりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問