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

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

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

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

Q&A

0回答

614閲覧

wgetを使用したいがエラーが発生

mastaka

総合スコア3

Python

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

1グッド

0クリップ

投稿2023/03/21 07:59

編集2023/03/22 22:39

実現したいこと

wgetモジュールを使用して、webサイト上からLZH形式のファイルをダウンロード・解凍して保存したい。

前提

以下のサイトを参考にボートレース情報が格納されているファイルを取得しようとして、jupiternotebookで動作を確認したところ、以下のようなエラーが出ました。
https://qiita.com/Norimax/items/c500d1bf78e823e07f2b

エラー発生元は「import wget」

MacOS 13.2.1
Python 3.9.13

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

ModuleNotFoundError: No module named 'wget'

該当のソースコード

python

1 2import pandas as pd 3import os 4import urllib.request 5import subprocess 6import wget 7 8def download_file(obj, date): 9 10 date = str(pd.to_datetime(date).date()) 11 ymd = date.replace('-', '') 12 S, s = ('K', 'k') if obj == 'result' else ('B', 'b') 13 if os.path.exists(f'downloads/{obj}/{ymd}.txt'): 14 return 15 else: 16 os.makedirs(f'downloads/{obj}', exist_ok=True) 17 try: 18 url_t = f'http://www1.mbrace.or.jp/od2/{S}/' 19 url_b = f'{ymd[:-2]}/{s}{ymd[2:]}.lzh' 20 wget.download(url_t + url_b, f'downloads/{obj}/{ymd}.lzh') 21 archive = LhaFile(f'downloads/{obj}/{ymd}.lzh') 22 d = archive.read(archive.infolist()[0].filename) 23 open(f'downloads/{obj}/{ymd}.txt', 'wb').write(d) 24 subprocess.run(['rm', f'downloads/{obj}/{ymd}.lzh']) 25 except urllib.request.HTTPerror: 26 print(f'There are no data for {date}')

試したこと

wgetの使い方を調べ、pip install wgetでインストールしてimport wgetと記載したのですが、うまく動作せず悩んでおります。

以上、よろしくお願いいたします。

jbpb0👍を押しています

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

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

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

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

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

hoshi-takanori

2023/03/21 08:19

お使いの OS と、python のインストール方法などを書きましょう。
mastaka

2023/03/21 08:30

追記いたしました。 他に不足情報あればコメントいただけると幸いです。
meg_

2023/03/21 08:40

「ModuleNotFoundError: No module named 'wget'」の発生元は「import wget」で良いでしょうか?
mastaka

2023/03/21 08:41

はい、発生元は「import wget」です。
jbpb0

2023/03/21 09:14

pip install wget を実行したのと同じ状態で pip show wget を実行してください いろいろ表示される中に「Location:」で始まる行があるので、そこに書かれてるパスを記録してください 次に、pythonで import wget がうまくいかない状態で、下記のpythonコードを実行してください import sys import pprint pprint.pprint(sys.path) たくさんパスが表示されますが、その中にpip show...で記録したパスが入ってますでしょうか? 入ってないとインポートできません
jbpb0

2023/03/21 09:19

pythonで import wget がうまくいかない状態で、下記のpythonコードを実行して、使ってるpythonの絶対パスを調べてください import sys print(sys.executable) 上記で調べた絶対パスが、たとえば /aaa/bbb/python だとしたら、ターミナルで(pythonが起動してない状態で)下記を実行したら、インポートできるようになると思います (実行する際は、調べた実際のpythonの絶対パスに置き換えてください) /aaa/bbb/python -m pip install wget
mastaka

2023/03/21 09:49

pip show wgetで表示された「Location:」で始まる行のパスは、 import sys import pprint pprint.pprint(sys.path) で表示されるパスに含まれていなかったため、pythonの絶対パスを確認して 絶対パス -m pip install wget を実行しましたが、以下の表示が出てしまいました。 zsh: no such file or directory
jbpb0

2023/03/21 11:33

> zsh: no such file or directory ターミナルで下記を実行したら、どうなりますでしょうか? ls -l 調べたpythonの絶対パス
mastaka

2023/03/21 12:19

ls: pythonの絶対パス: No such file or directory と表示されます。
jbpb0

2023/03/21 12:59

調べたpythonの絶対パスが、たとえば /aaa/bbb/ccc/ddd/python だとします 下記のように、パスの最初から一つずつ増やして「ls -ld...」を実行してみてください ls -ld / ls -ld /aaa ls -ld /aaa/bbb ls -ld /aaa/bbb/ccc ls -ld /aaa/bbb/ccc/ddd ls -ld /aaa/bbb/ccc/ddd/python そうしたら、最初のうちはうまくいくけど、どこかで > ls: パス: No such file or directory となると思いますので、そうなった時にパスに追加した部分に何か特徴がありませんでしょうか? たとえば、 ls -ld /aaa/bbb は大丈夫だけど、 ls -ld /aaa/bbb/ccc はダメなら、「ccc」の部分に何かあるはずです (特殊な文字が含まれてるとか)
mastaka

2023/03/21 13:59

パスが /home/pyodide/this.program でして、 ls -ld /home は問題なさそうなのですが、 ls -ld /home/pyodide で ls: /home/pyodide: No such file or directory と表示されます。
jbpb0

2023/03/21 14:22 編集

ls -l /home を実行したら、「/home」に有るファイルやディレクトリの一覧が表示されますが、その中に「pyodide」は有りますでしょうか? 大文字と小文字の違いも区別されるので、ご注意ください
mastaka

2023/03/21 14:22

lrwxr-xr-x 1 root wheel 25 2 22 20:40 /home -> /System/Volumes/Data/home と表示され、「pyodide」はないようです。
jbpb0

2023/03/21 14:24

ls -l /System/Volumes/Data/home では、どうでしょうか?
mastaka

2023/03/21 14:25

total 0 と表示されます。
jbpb0

2023/03/22 01:18 編集

そうなら、 「/home/pyodide」 というパスが存在しないので、当然 「/home/pyodide/this.program」 というパスも存在しないので、 > ls: パス: No such file or directory となります pythonで import sys print(sys.executable) を実行して表示されたパスが存在しないはずはないのですが、変ですね 【追記】 > パスが /home/pyodide/this.program 「pyodide」って、もしかしてこれでしょうか? https://snova301.hatenablog.com/entry/2022/03/22/153638 もしそうなら、普通のpythonのようにpipでインストールすることはできないので、上記webページの 「Pyodideでサポートされているライブラリを使いたい時」 と 「サポート外のライブラリを使いたい時」 を見てください ただし、 https://zenn.dev/ymd_h/articles/7275cc8dca30e1 を見ると、インストールできるものは限られてるようなので、「pyodide」に「wget」がインストールできるかは分かりません 【追記2】 あるいは、もし「jupyterlite」 https://medium.com/pydata-osaka/jupyterlite-jupyter-%EF%B8%8Fwebassembly-%EF%B8%8Fpython%E3%81%AE%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A8%B3-1f228a9d97d1 を使ってるなら、 https://teratail.com/questions/bfyuxfw5u7kfu5 の「質問へのコメント」の私の二つ目のコメントを見てください ただし、「jupyterlite」の裏では「pyodide」が動いてるので、インストールできるものは限られてるのは「pyodide」と同様だと思います
mastaka

2023/03/21 22:44

はい、同一のmacです。 jupiternotebookで実行しているのは特に問題ないでしょうか?
jbpb0

2023/03/21 23:32

私の一つ前のコメントの【追記】と【追記2】を見てください
mastaka

2023/03/22 13:39

「jupyterlite」を使っているのが原因のようでした。 ターミナルからjupyternotebookを開いて試したところ、正常に動きました。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問