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

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

新規登録して質問してみよう
ただいま回答率
85.48%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Scrapy

Scrapyは、Pythonで開発されたオープンソースソフトウェアです。スクレイピングという、Webサービスから必要な情報を取り出したり自動操作をしたりする技術を使うものです。

Q&A

解決済

2回答

1910閲覧

scrapyでデバッグの際のみmodulenotfounderrorが出る(IDE:vscode)

z6Goz6t76bFDl1M

総合スコア1

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Scrapy

Scrapyは、Pythonで開発されたオープンソースソフトウェアです。スクレイピングという、Webサービスから必要な情報を取り出したり自動操作をしたりする技術を使うものです。

0グッド

0クリップ

投稿2021/09/06 12:23

編集2021/09/07 01:35

解決したいこと

webスクレイピングツールであるscrapyを用いて作成した自作モジュールをデバッグする際に
ModuleNotFoundErrorが出て困っています。
pythonで実行した際にはエラーは出ず実行できるのですがvscodeのデバッガーツールを使ってデバッグした時のみ
ModuleNotFoundErrorが出ます。

発生している問題・エラー

python debug console

ModuleNotFoundError: No module named 'company'

エラー文]

該当するソースコード

quotes2.py

#外部モジュール(自作)のインポートとcsvの形成 import scrapy import csv import pathlib import os import sys import pprint #sys.path.append(os.path.dirname(os.path.abspath(__file__))) #sys.path.append(str(pathlib.Path(__file__).resolve().parents[1])) #sys.path.append(str(pathlib.Path(__file__).resolve().parent) + "/../") #pprint.pprint(sys.path) #print(os.path) #print(pathlib.Path(__file__).resolve())#__file__:現在のfile,resolve():絶対パス from company.items import CompanyItem 下記省略

該当するソースコード

items.py

import scrapy class CompanyItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() #name = scrapy.Field() heading = scrapy.Field() excerpt = scrapy.Field() address = scrapy.Field()

###ディレクトリ構造
下のquotes2.pyから一つ上のitems.pyのクラスをimportしようと試みています。
カレントディレクトリは
python/company
で実行コマンドは
scrapy crawl quotes2 --nolog
です。

構造

自分で試したこと

上記のquotes2.pyでコメントアウトしているようにpathを追加してみたりもしてみましたがデバッグする際の問題なのでlaunch.json等をいじってみたりもしました。しかしModuleNotFoundErrorのエラーは変わらないままでqiitaで投稿することで質問することにしました。

json:.vscode/launch.json

1{ 2 "name": "Python: Current File", 3 "type": "python",//node python等 4 "request": "launch",//特定のファイル:launch,既に動いているファイル:attach 5 "program": "${file}",//現在アクティブなファイル 6 "console": "integratedTerminal", 7 //"justMyCode" : false,//外部ライブラリの探索 8 "python.autoComplete.extraPaths": [ 9 "C:\Users\Owner\OneDrive\ドキュメント\python\company\company", 10 ], 11 }, 12 { 13 "name": "Scrapy: Current Spider", 14 "type": "python", 15 "request": "launch", 16 "program": "crawl.py", 17 "args": [ 18 "${fileBasenameNoExtension}" 19 ], 20 "console": "integratedTerminal" 21 },

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

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

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

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

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

z6Goz6t76bFDl1M

2021/09/06 15:02

申し訳ございません。すぐに削除いたします。ご教授いただきありがとうございます。
guest

回答2

0

自己解決

vscodeとデバッガーツールで実行環境が違うためsys.path.append()で実行中のパスを追加する

投稿2021/09/07 06:41

z6Goz6t76bFDl1M

総合スコア1

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

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

0

「pythonで実行した際」と、「vscodeのデバッガーツールを使ってデバッグした時」ではカレントディレクトリが違っているのでしょう。

コードの先頭に以下を入れてそれぞれの環境で実行して比較してみてください。

python

1import os 2os.getcwd()

違っていたら、以下に書いてあるコードを、vscodeのデバッガーツールを使ってデバッグした時」のソースコードの最初に追加しましょう。

python

1import os 2os.chdir(「pythonで実行した際」のカレントディレクトリ)

投稿2021/09/06 22:41

ppaul

総合スコア24666

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

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

z6Goz6t76bFDl1M

2021/09/07 06:39

vscodeとpythonファイルで実行環境が違うとのご指摘を頂きましたので調べてみたところos.chdirではなくsys.path.append()でpythonの実行環境のpathを追加したところデバッグ可能になりました。 私自身osモジュールとsysモジュールの違いがあまりわかっていないためより詳細に調べてみることにします。アドバイスありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問