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

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

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

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

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

解決済

1回答

1595閲覧

自然言語ツールキットのnltkがimportできない

cunwe

総合スコア65

Python 3.x

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

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

0グッド

0クリップ

投稿2021/09/14 16:24

実現したいこと

自然言語ツールキットのnltkを使えるようにしたい

やったこと

NLTKのホームページにあるpip install --user -U nltkを実施したら以下のようなエラーが出ました

Traceback (most recent call last): File "/usr/local/bin/pip", line 6, in <module> from pkg_resources import load_entry_point File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 3241, in <module> @_call_aside File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 3225, in _call_aside f(*args, **kwargs) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 3254, in _initialize_master_working_set working_set = WorkingSet._build_master() File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 585, in _build_master return cls._build_from_requirements(__requires__) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 598, in _build_from_requirements dists = ws.resolve(reqs, Environment()) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 786, in resolve raise DistributionNotFound(req, requirers) pkg_resources.DistributionNotFound: The 'pip==20.3' distribution was not found and is required by the application

そこでraise DistributionNotFoundで調べたところこちらの記事が見つかったので、pip install --upgrade setuptoolsを実施しましたがまたraise DistributionNotFoundエラーが出てしまいました。またこの辺りも試しましたがダメでした。知見をお持ちの方、よろしくお願いします。

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

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

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

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

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

jbpb0

2021/09/14 23:09

> /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py Python 2.7に入れようとしてますよ Python 3.*じゃないと入りませんけど、それは別途自分で入れてますか? それとも、OS同梱のを使うのですか?
cunwe

2021/09/15 03:01

あ、本当ですね。元からMacに入ってる2系のPython消したいのでsudo rm -rf /Library/Frameworks/Python.framework/Versions/2.7とsudo rm -rf "/Applications/Python 2.7"を実行したのですが、python --version するとPython 2.7.16と表示されてしまいまだ残ってるようなのですが原因お分かりになったりしますでしょうか...?
cunwe

2021/09/15 03:16

しかしpyenvにはバージョンが3.9.7のPythonが入っております
jbpb0

2021/09/15 03:50

> 元からMacに入ってる2系のPython消したい それ消しても大丈夫ですか? OSがそれ使ってたりしてませんかね? (質問とは直接は関係無いですが)
jbpb0

2021/09/15 03:55

> pyenvにはバージョンが3.9.7のPythonが入っております ターミナルで下記を実行したら、状況分かるかも which -a python which -a python3 which -a pip which -a pip3
cunwe

2021/09/15 03:58

>それ消しても大丈夫ですか? OSがそれ使ってたりしてませんかね? そうかもしれませんが、結果的には消えてないので今のところ大丈夫ですかね...? ご提示いただいたコマンドの実行結果は以下になります。 /usr/bin/python /usr/bin/python3 /usr/local/bin/pip /usr/bin/pip3
jbpb0

2021/09/15 04:01

「-a」を付けても、各一個ずつだけしか表示されませんでした?
cunwe

2021/09/15 04:06

はい、「-a」つけましたが上記のように1行ずつしか出ませんでした。
jbpb0

2021/09/15 04:13 編集

> pyenvにはバージョンが3.9.7のPythonが入っております は、質問者さんがMacにインストールしたのですよね? それはどこに入ってるのでしょうか? インストールの際に、PATHの設定はしました?
cunwe

2021/09/15 04:15

>質問者さんがMacにインストールしたのですよね? はい >その際に、PATHの設定はしました? .zshrcに書きました。 .zshr開くとこんな感じです。(Python3.3以上ではvirtualenvいらないという記事を見かけましたが。。) export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
jbpb0

2021/09/15 04:19

ターミナルで echo $PATH を実行したら、「$HOME/.pyenv/bin」は含まれてますか? (「$HOME」は自分のホームディレクトリに置き換えてください) また、「$HOME/.pyenv/bin」には、「python」とか「pip」とか「python3」とか「pip3」とか、それらしい名前のファイルはありますか?
cunwe

2021/09/15 04:24

以下がecho $PATHの実行結果になります。それらしい名前は無さそうです...? /usr/local/Cellar/pyenv-virtualenv/1.1.5/shims:/Users/m.t./.pyenv/bin:/bin:/sbin:/usr/bin:/usr/local/bin:usr/sbin:usr/local/bin/nodebrew:/Users/m.t./.npm_global/bin:
jbpb0

2021/09/15 04:37

「/Users/m.t./.pyenv/bin」がそうです $PATHにちゃんと入ってますね pyenv versions を実行したら、何て表示されますか?
cunwe

2021/09/15 04:43

* system (set by /Users/m.t./.pyenv/version) 3.9.7 と表示されます。
jbpb0

2021/09/15 05:08 編集

https://qiita.com/twipg/items/75fc9428e4c33ed429c0 の「pythonのバージョンの切り替え」を参考にして、「3.9.7」に切り替えてみてください 上記の方法でうまくバージョンが変わらないなら、 https://qiita.com/Kohey222/items/19eb9b3cbcec9b176625 の「pythonのバージョンを変更可能なバージョンに変更する」を見てください pythonのバージョンが「3.9.7」に切り替わったら、再び which -a python which -a python3 which -a pip which -a pip3 を実行してみてください
cunwe

2021/09/15 05:13

参考リンク、添付してくださりありがとうございます。 切り替えを行いまして$pyenv versionsを実行すると system * 3.9.7 (set by /Users/m.t./collect_comment_from_youtube/.python-version) になりました。
jbpb0

2021/09/15 05:56

python --version も実行してバージョンを確認してください 「3.9.7」と表示されますか? それも大丈夫なら、 which -a python which -a python3 which -a pip which -a pip3 を実行してみてください たぶん「python」と「pip」はpyenvで入れたのが見つかるはず
cunwe

2021/09/15 06:04

$python --version 実行するといまだにPython 2.7.16ですね...。先ほど$pyenv local 3.9.7としたのですがloacalではなくglobalにしないとダメでしょうか?このcollect_comment_from_youtubeディレクトリだけ3.9.7を適用したいのですが。
cunwe

2021/09/15 06:35

そうですね、自分の場合はlocalですが$ eval "$(pyenv init -)"を実行し、$ python --versionしてもPython 2.7.16です...
jbpb0

2021/09/15 06:49 編集

すみませんが、pyenvはあまり使ってないので、詳しくは分からないです (私はAnaconda使ってるので) この質問とは別に、pyenvの使い方の質問を作った方が、詳しい方が回答してくれると思います この質問のエラーは、pyenvで入れた3.9.*が使えるようになって、それに紐付いたpipが使えるようになれば、そのpipを使ってインストールすれば解決すると思います (別のエラーが何か出るかもしれないけど、少なくとも前進はする) 【追記】 念の為にダメ元で、 python3 --version も確認してみてください
cunwe

2021/09/15 07:24

$python3 --versionするとPython 3.8.2と出ました
jbpb0

2021/09/15 07:46

「3.9.*」じゃないから、それはたぶんOS同梱のやつですよね which python3 の結果は「/usr/bin/python3」ではないですかね
cunwe

2021/09/15 07:52

>which python3の結果は「/usr/bin/python3」ではないですかね はい、そうでした >「3.9.*」じゃないから、それはたぶんOS同梱のやつですよね なんですかね?すると2.7.16はなんでしょう...?
cunwe

2021/09/15 07:54

ちなみに$ which pyenvすると~/.pyenv/bin/pyenvと出るかと思ったのですが、以下のように出てさらに困惑しています... pyenv () { local command command="${1:-}" if [ "$#" -gt 0 ] then shift fi case "$command" in (activate | deactivate | rehash | shell) eval "$(pyenv "sh-$command" "$@")" ;; (*) command pyenv "$command" "$@" ;; esac }
cunwe

2021/09/15 15:18 編集

お待たせいたしました。pythonのバージョンが切り替わりました。そこで先程の4パータンのwhichコマンドを実行すると /Users/m.t./.pyenv/shims/python /usr/bin/python /usr/bin/python /Users/m.t./.pyenv/shims/python3 /usr/bin/python3 /usr/bin/python3 /Users/m.t./.pyenv/shims/pip /usr/local/bin/pip /usr/local/bin/pip /Users/m.t./.pyenv/shims/pip3 /usr/bin/pip3 /usr/bin/pip3 と表示されました。またどれも/usr/bin/python /usr/bin/pythonのように同じのが2行出力されるのはなぜでしょうか?
jbpb0

2021/09/15 15:09

> /usr/bin/python /usr/bin/pythonのように同じのが2行出力されるのはなぜでしょうか? $PATHに「/usr/bin」が2回登録されてるとそうなりますが、 > /usr/local/Cellar/pyenv-virtualenv/1.1.5/shims:/Users/m.t./.pyenv/bin:/bin:/sbin:/usr/bin:/usr/local/bin:usr/sbin:usr/local/bin/nodebrew:/Users/m.t./.npm_global/bin: ではそうではないですね 上記は$PATHの全部ですか? 一部を省略したりしてませんか? あと、$PATHの内で、下記は間違ってます どちらも、先頭の「/」が足りない usr/sbin usr/local/bin/nodebrew
cunwe

2021/09/15 15:24

どんどん本題からずれてしまい、申し訳ありません。 今.zshrcファイル内は export PS1='m.t.% ' export PATH=/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin:/usr/local/bin/nodebrew:$HOME/.npm_global/bin:$PATH export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" eval "$(pyenv init --path)" となっていて echo $PATHをすると /Users/m.t./.pyenv/shims:/usr/local/Cellar/pyenv-virtualenv/1.1.5/shims:/Users/m.t./.pyenv/bin:/bin:/sbin:/usr/bin:/usr/local/bin:usr/sbin:usr/local/bin/nodebrew:/Users/m.t./.npm_global/bin:/usr/local/Cellar/pyenv-virtualenv/1.1.5/shims:/Users/m.t./.pyenv/bin:/bin:/sbin:/usr/bin:/usr/local/bin:usr/sbin:usr/local/bin/nodebrew:/Users/m.t./.npm_global/bin: と表示されます。.zshrcに2回書いてないのになぜecho $PATHすると2つ出てきてしまうのでしょうか...? また本題ですが、pip3 install --user -U nltkを実行すれば良いでしょうか?
jbpb0

2021/09/16 00:25

> pip3 install --user -U nltkを実行すれば良いでしょうか? そうですね やってみてください
cunwe

2021/09/16 02:19 編集

入ったは入ったぽいのですが、 VScodeを使用しているのですが、依然import nltkの部分に黄色の波線が引かれ`Import "nltk" could not be resolvedPylancereportMissingImports`と書いてあり、認識されていないようです。。
jbpb0

2021/09/16 04:57

> Import "nltk" could not be resolvedPylancereportMissingImports は、VS Codeの「Pylance」が知らないと言ってるのであって、Pythonが知らないと言ってるわけではないです Pythonでインポートして実行できるかどうかが重要です VS Codeを使わないでPythonコードを実行したら、どうなりますか? 参考 https://teratail.com/questions/348579
cunwe

2021/09/16 06:13

Macのターミナルでのpython textsynthesis_with_markovchain.pyの実行結果は Traceback (most recent call last): File "/Users/t.m./collect_comment_from_youtube/textsynthesis_with_markovchain.py", line 10, in <module> from nltk.sentiment import SentimentIntensityAnalyzer ModuleNotFoundError: No module named 'nltk' です。
jbpb0

2021/09/16 08:48 編集

pip3 install --user -U nltk を実行したのと同じ状態で pip3 show nltk を実行してください いろいろ表示される中に「Location:」で始まる行がありますので、そこに書かれてるパスを記録してください 次に、pythonで from nltk.sentiment import SentimentIntensityAnalyzer がうまくいかない状態で、下記のpythonコードを実行してください import sys import pprint pprint.pprint(sys.path) たくさんパスが表示されますが、その中にpip3 show...で記録したパスが入ってますでしょうか? 入ってないとimportできません もし入ってなければ、pip3 install...を実行したpip3に紐付いてるpythonと、今使っているpythonが違う、ということです python(python3?)もpip3も、どちらもpyenvで入れた3.9.*を使ってれば、pip3で入れたものはpython(python3?)でインポートできるはずです インポートできないのなら、下記のどれかでしょう ・pip3でのインストールがうまくいってない ・違うpip3(OS同梱のとか)で入れてしまった ・違うpythonを使ってる > python textsynthesis_with_markovchain.pyの実行結果は 念の為に、 python3 textsynthesis_with_markovchain.py もやってみてください もちろん、pyenvで入れた3.9.*が有効な状態で
cunwe

2021/09/16 11:46 編集

こちらがpip3 show nltkの実行結果です WARNING: Package(s) not found: nltk 何故かLocationで始める行が出力されません。。
cunwe

2021/09/16 11:32 編集

こちらがご提示いただいたimport sysの3行をtextsynthesis_with_markovchain.pyに追記し、$python3 textsynthesis_with_markovchain.pyを実行した結果です。 ['/Users/m.t./collect_comment_from_youtube', '/Users/m.t./.pyenv/versions/3.9.7/lib/python39.zip', '/Users/m.t./.pyenv/versions/3.9.7/lib/python3.9', '/Users/m.t./.pyenv/versions/3.9.7/lib/python3.9/lib-dynload', '/Users/m.t./.pyenv/versions/3.9.7/lib/python3.9/site-packages'] Traceback (most recent call last): File "/Users/m.t./collect_comment_from_youtube/textsynthesis_with_markovchain.py", line 12, in <module> from nltk.sentiment import SentimentIntensityAnalyzer ModuleNotFoundError: No module named 'nltk'
cunwe

2021/09/16 11:59

sys.platfromと打ってもmacと出ず、zsh: command not found: sys.platformと出るので何かおかしいですね...
jbpb0

2021/09/16 12:01

> Package(s) not found: nltk インストールできてないようですけど 今下記を実行したら、何て表示されますか? (もちろん、pyenvで入れた3.9.*が有効な状態で) pip3 install --user -U nltk
cunwe

2021/09/16 12:03

pip3 install --user -U nltkの実行結果はこちらです。 Collecting nltk Using cached nltk-3.6.2-py3-none-any.whl (1.5 MB) Collecting regex Downloading regex-2021.8.28-cp39-cp39-macosx_10_9_x86_64.whl (285 kB) |████████████████████████████████| 285 kB 7.8 MB/s Collecting click Using cached click-8.0.1-py3-none-any.whl (97 kB) Collecting joblib Using cached joblib-1.0.1-py3-none-any.whl (303 kB) Collecting tqdm Using cached tqdm-4.62.2-py2.py3-none-any.whl (76 kB) Installing collected packages: tqdm, regex, joblib, click, nltk WARNING: The script tqdm is installed in '/Users/m.t./.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. WARNING: The script nltk is installed in '/Users/m.t./.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. Successfully installed click-8.0.1 joblib-1.0.1 nltk-3.6.2 regex-2021.8.28 tqdm-4.62.2 WARNING: You are using pip version 21.2.3; however, version 21.2.4 is available. You should consider upgrading via the '/Users/m.t./.pyenv/versions/3.9.7/bin/python3.9 -m pip install --upgrade pip' command.
jbpb0

2021/09/16 12:05

> zsh: command not found: sys.platformと出る それは、Pythonを起動してない状態だからでしょう Pythonを(対話モードで)起動して、 import sys print(sys.platform) を実行したら、当方のMacでは darwin と表示されます
jbpb0

2021/09/16 12:11

> Using cached nltk-3.6.2-py3-none-any.whl (1.5 MB) > Successfully installed click-8.0.1 joblib-1.0.1 nltk-3.6.2 regex-2021.8.28 tqdm-4.62.2 「nltk」が、今インストールされたようです 既にインストールされてたら、もう入ってる的な表示がされるはずなので もう一度 pip3 show nltk をやってみてください
cunwe

2021/09/16 12:18

pip3 show nltkの実行結果はこちらです。 Name: nltk Version: 3.6.2 Summary: Natural Language Toolkit Home-page: http://nltk.org/ Author: Steven Bird Author-email: stevenbird1@gmail.com License: Apache License, Version 2.0 Location: /Users/m.t./.local/lib/python3.9/site-packages Requires: click, regex, joblib, tqdm Required-by:
jbpb0

2021/09/16 12:49 編集

pip3で入れたのは > Location: /Users/m.t./.local/lib/python3.9/site-packages に入ってるけど、Pythonが探す「sys.path」は > /Users/m.t./.pyenv/versions/3.9.7/lib/python3.9/site-packages だから、見つからないのでインポートできません Pythonの「sys.path」は「/Users/m.t./.pyenv/...」だから、pyenvで入れた3.9.7ですね pip3の「Location:」は「/Users/m.t./.local/...」だから、pyenvのじゃないっぽい Python 3.9が、pyenvのとは別にインストールされてませんか? which -a pip3 を実行したら、何て表示されますか? 【追記】 もしかしたら、pyenvで「global」じゃなくて「loacal」にしたら、「/Users/m.t./.local/...」になるのかもしれないけど、すみませんが分かりません
cunwe

2021/09/16 12:58

which -a pip3を実行するとこうなります。 /Users/m.t./.pyenv/shims/pip3 /usr/bin/pip3 /Users/m.t./.pyenv/shims/pip3 /usr/bin/pip3 /usr/bin/pip3
jbpb0

2021/09/16 13:02

大丈夫なようですね もしかしたら、「pip3 install」に「--user」を付けたので別の場所に入ったのかも pip3 install -U nltk でインストールできますか?
cunwe

2021/09/16 13:10 編集

$pip3 install -U nltkを実行すると以下のような結果が出ました Requirement already satisfied: nltk in /Users/m.t./.local/lib/python3.9/site-packages (3.6.2) Requirement already satisfied: regex in /Users/m.t./.local/lib/python3.9/site-packages (from nltk) (2021.8.28) Requirement already satisfied: tqdm in /Users/m.t./.local/lib/python3.9/site-packages (from nltk) (4.62.2) Requirement already satisfied: click in /Users/m.t./.local/lib/python3.9/site-packages (from nltk) (8.0.1) Requirement already satisfied: joblib in /Users/m.t./.local/lib/python3.9/site-packages (from nltk) (1.0.1) WARNING: You are using pip version 21.2.3; however, version 21.2.4 is available. You should consider upgrading via the '/Users/m.t./.pyenv/versions/3.9.7/bin/python3.9 -m pip install --upgrade pip' command.
jbpb0

2021/09/16 14:29

コードの先頭に下記を追加してみてください import sys sys.path.append("/Users/m.t./.local/lib/python3.9/site-packages")
cunwe

2021/09/16 14:45

追加する前も追加した後も$python3 textsynthesis_with_markovchain.pyを実行すると以下のようになり、一応NLTKが効いてる(tokenizeされてる)みたいですがそちらのコードが効いてるかはどうやったらわかりますでしょうか...? [nltk_data] Downloading package punkt to /Users/m.t./nltk_data... [nltk_data] Package punkt is already up-to-date! [nltk_data] Downloading package stopwords to /Users/m.t./nltk_data... [nltk_data] Package stopwords is already up-to-date! [nltk_data] Downloading package vader_lexicon to [nltk_data] /Users/m.t./nltk_data... [nltk_data] Package vader_lexicon is already up-to-date! [nltk_data] Downloading package tagsets to /Users/m.t./nltk_data... [nltk_data] Package tagsets is already up-to-date! ['It', "'s", 'a', 'gift', 'for', 'Mr.', 'Smith', '.']
jbpb0

2021/09/16 15:01

あれ? 「sys.path.append()」をやらなくてもインポートできるのですか? それならば「sys.path.append()」は不要です
cunwe

2021/09/16 15:02

sys.path.append()やってしまいました、、
jbpb0

2021/09/16 15:09

それはコード内で実行したら一時的に追加されるだけなので、実行しなければいいだけです
cunwe

2021/09/16 15:15

すいません、ターミナルで対話モードにして実行してしまいました、、
jbpb0

2021/09/16 15:22

実行した時のPythonでだけ有効で、「exit()」で終了したら設定消える
cunwe

2021/09/16 17:45

そうなのですね。ありがとうございます。 また、VScodeのnltkに引かれた波線が消えない原因ご存知だったりしますでしょうか?拡張機能のPylanceはインストールしてるのですが。。
jbpb0

2021/09/16 22:15

VS Codeは使ってないので、分かりません
cunwe

2021/09/17 01:59

かしこまりました。jbpb0さんのおかげでnltk自体は使えるようになりましたこと感謝いたします。ありがとうございました!
guest

回答1

0

ベストアンサー

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/init.py

Python 2.7に入れようとしてます

nltk によると、Python 3.5以降じゃないと入らないようです

投稿2021/09/17 10:42

jbpb0

総合スコア7651

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

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

cunwe

2021/09/17 10:50

そうなんですね、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問