Pyenvを入れてライブラリがnot foundになったり、スクリプトが動かなくなったら、まず最初にやること


###（ 実行環境 ）

・ MacBookPro macOS Catalina

##<font color="Red">起きた事</font>

1. __*pyenv*を入れる前__に動いていた__*ginza*__が<font color="Red">__認識されなくなった</font>__。
2. 動いていた__*ginza*__は、__*Python 3.9.0*__で動いていた。
（Python 3.9.0をインストール後に、pip3 installで以下を実行して入れていた）

```bash:Terminal
$ pip3 install "https://github.com/megagonlabs/ginza/releases/download/latest/ginza-latest.tar.gz"
```
#####__動いていた__*ginza*__は、__*Python 3.9.0*__で動いていた。__

```bash:Terminal
％ ginza
pyenv: ginza: command not found

The `ginza' command exists in these Python versions:
  3.9.0

Note: See 'pyenv help global' for tips on allowing both
      python2 and python3 to be found.
％
```

###Pyenvで選択中のPythonのバージョンを確認

#####__Python 3.6.0だった。__

```bash:Terminal
％ python --version 
Python 3.6.0
％ 
```

```bash:Terminal
% pyenv versions  
  system
  3.6.0
  3.6.0/envs/TensorFlow
  3.9.0
* TensorFlow (set by /Users/ocean/.pyenv/version)
％ 
```
###<font color="Blue">解決策</font>
#####__Python 3.9.0に切り替える__

```bash:Terminal
％ pyenv local 3.9.0
％ python --version
Python 3.9.0
％
```

###__*ginza*が<font color="Blue">無事動いた！</font>__

```bash:Terminal
％ ginza
/Users/ocean/.pyenv/versions/3.9.0/lib/python3.9/site-packages/spacy/util.py:275: UserWarning: [W031] Model 'ja_ginza' (2.2.0) requires spaCy v2.2 and is incompatible with the current spaCy version (2.3.2). This may lead to unexpected results or runtime errors. To resolve this, download a newer compatible model or retrain your custom model with the current spaCy version. For more details and available updates, run: python -m spacy validate
  warnings.warn(warn_msg)
mode is C
disabling sentence separator
2027年の開業が難しくなっているリニア中央新幹線をめぐって、沿線の自治体を代表して愛知県の大村知事が10日、国土交通省を訪れ、早期の開業に向けて関係者との協議を国が積極的に行うよう要望しました。
# text = 2027年の開業が難しくなっているリニア中央新幹線をめぐって、沿線の自治体を代表して愛知県の大村知事が10日、国土交通省を訪れ、早期の開業に向けて関係者との協議を国が積極的に行うよう要望しました。
1	2027	2027	NUM	名詞-数詞	NumType=Card	2	nummod	_	BunsetuBILabel=B|BunsetuPositionType=CONT|SpaceAfter=No|NE=DATE_B
2	年	年	NOUN	名詞-普通名詞-助数詞可能	_	4	nmod	_	BunsetuBILabel=I|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B|NE=DATE_I
3	の	の	ADP	助詞-格助詞	_	2	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
4	開業	開業	NOUN	名詞-普通名詞-サ変可能	_	7	nsubj	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
5	が	が	ADP	助詞-格助詞	_	4	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
6	難しく	難しい	ADJ	形容詞-一般	_	7	amod	_	BunsetuBILabel=B|BunsetuPositionType=CONT|SpaceAfter=No
7	なっ	成る	VERB	動詞-非自立可能	_	12	acl	_	BunsetuBILabel=I|BunsetuPositionType=SEM_HEAD|SpaceAfter=No
8	て	て	SCONJ	助詞-接続助詞	_	7	mark	_	BunsetuBILabel=I|BunsetuPositionType=FUNC|SpaceAfter=No
9	いる	居る	AUX	動詞-非自立可能	_	7	aux	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
10	リニア	リニア	ADJ	名詞-普通名詞-形状詞可能	_	12	compound	_	BunsetuBILabel=B|BunsetuPositionType=CONT|SpaceAfter=No|NE=ORG_B
11	中央	中央	NOUN	名詞-普通名詞-一般	_	12	compound	_	BunsetuBILabel=I|BunsetuPositionType=CONT|SpaceAfter=No|NP_B|NE=ORG_I
12	新幹線	新幹線	NOUN	名詞-普通名詞-一般	_	14	obj	_	BunsetuBILabel=I|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_I|NE=ORG_I
13	を	を	ADP	助詞-格助詞	_	12	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
14	めぐっ	巡る	VERB	動詞-一般	_	21	advcl	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No
15	て	て	SCONJ	助詞-接続助詞	_	14	mark	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
16	、	、	PUNCT	補助記号-読点	_	14	punct	_	BunsetuBILabel=I|BunsetuPositionType=CONT|SpaceAfter=No
17	沿線	沿線	NOUN	名詞-普通名詞-一般	_	19	nmod	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
18	の	の	ADP	助詞-格助詞	_	17	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
19	自治体	自治体	NOUN	名詞-普通名詞-一般	_	21	obj	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
20	を	を	ADP	助詞-格助詞	_	19	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
21	代表	代表	VERB	名詞-普通名詞-サ変可能	_	34	advcl	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No
22	し	為る	AUX	動詞-非自立可能	_	21	aux	_	BunsetuBILabel=I|BunsetuPositionType=FUNC|SpaceAfter=No
23	て	て	SCONJ	助詞-接続助詞	_	21	mark	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
24	愛知県	愛知県	NOUN	名詞-固有名詞-地名-一般	_	27	nmod	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B|NE=LOC_B
25	の	の	ADP	助詞-格助詞	_	24	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
26	大村	大村	PROPN	名詞-固有名詞-地名-一般	_	27	compound	_	BunsetuBILabel=B|BunsetuPositionType=CONT|SpaceAfter=No|NP_B|NE=PERSON_B
27	知事	知事	NOUN	名詞-普通名詞-一般	_	30	nsubj	_	BunsetuBILabel=I|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_I
28	が	が	ADP	助詞-格助詞	_	27	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
29	10	10	NUM	名詞-数詞	NumType=Card	30	nummod	_	BunsetuBILabel=B|BunsetuPositionType=CONT|SpaceAfter=No|NE=DATE_B
30	日	日	NOUN	名詞-普通名詞-助数詞可能	_	34	nmod	_	BunsetuBILabel=I|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B|NE=DATE_I
31	、	、	PUNCT	補助記号-読点	_	30	punct	_	BunsetuBILabel=I|BunsetuPositionType=CONT|SpaceAfter=No
32	国土交通省	国土交通省	NOUN	名詞-固有名詞-一般	_	34	obj	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B|NE=ORG_B
33	を	を	ADP	助詞-格助詞	_	32	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
34	訪れ	訪れる	VERB	動詞-一般	_	52	advcl	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No
35	、	、	PUNCT	補助記号-読点	_	34	punct	_	BunsetuBILabel=I|BunsetuPositionType=CONT|SpaceAfter=No
36	早期	早期	NOUN	名詞-普通名詞-一般	_	38	nmod	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
37	の	の	ADP	助詞-格助詞	_	36	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
38	開業	開業	NOUN	名詞-普通名詞-サ変可能	_	40	obl	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
39	に	に	ADP	助詞-格助詞	_	38	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
40	向け	向く	VERB	動詞-一般	_	52	advcl	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No
41	て	て	SCONJ	助詞-接続助詞	_	40	mark	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
42	関係者	関係者	NOUN	名詞-普通名詞-一般	_	45	nmod	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
43	と	と	ADP	助詞-格助詞	_	42	case	_	BunsetuBILabel=I|BunsetuPositionType=FUNC|SpaceAfter=No
44	の	の	ADP	助詞-格助詞	_	42	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
45	協議	協議	NOUN	名詞-普通名詞-サ変可能	_	52	obj	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
46	を	を	ADP	助詞-格助詞	_	45	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
47	国	国	NOUN	名詞-普通名詞-一般	_	52	nsubj	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
48	が	が	ADP	助詞-格助詞	_	47	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
49	積極的	積極的	NOUN	名詞-普通名詞-形状詞可能	_	52	nmod	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
50	に	だ	AUX	助動詞	_	49	aux	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
51	行う	行う	VERB	動詞-一般	_	52	aux	_	BunsetuBILabel=B|BunsetuPositionType=CONT|SpaceAfter=No
52	よう	様	AUX	形状詞-助動詞語幹	_	53	advmod	_	BunsetuBILabel=I|BunsetuPositionType=SEM_HEAD|SpaceAfter=No
53	要望	要望	VERB	名詞-普通名詞-サ変可能	_	0	root	_	BunsetuBILabel=B|BunsetuPositionType=ROOT|SpaceAfter=No
54	し	為る	AUX	動詞-非自立可能	_	53	aux	_	BunsetuBILabel=I|BunsetuPositionType=FUNC|SpaceAfter=No
55	まし	ます	AUX	助動詞	_	53	aux	_	BunsetuBILabel=I|BunsetuPositionType=FUNC|SpaceAfter=No
56	た	た	AUX	助動詞	_	53	aux	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
57	。	。	PUNCT	補助記号-句点	_	53	punct	_	BunsetuBILabel=I|BunsetuPositionType=CONT|SpaceAfter=No

^Z
zsh: suspended  ginza
％
```

###__*ginza*を呼び出す自作スプリプトも<font color="Blue">実行成功</font>__

```bash:Terminal
% cd Desktop/tkinter_test 
% python --version
Python 3.9.0
% python3 --version
Python 3.9.0
% 
% python tkinter_ner_svo_list_filter_by_target_word_and_case_file_dialog3.py
% 
%
```

![スクリーンショット 2020-12-10 14.43.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/d5814ed2-8c1c-effe-8ba6-54bab231e81d.png)


```bash:Terminal
％ pyenv versions
  system
  3.6.0
  3.6.0/envs/TensorFlow
* 3.9.0 (set by /Users/ocean/.python-version)
  TensorFlow
 %
 ```
 
####再び*pyenv*で他のPythonバージョンに変更すると、<font color="Red">__また動かなくなる</font>__
 
 ```bash:Terminal
％ pyenv local TensorFlow
％ pyenv versions        
  system
  3.6.0
  3.6.0/envs/TensorFlow
  3.9.0
* TensorFlow (set by /Users/ocean/Desktop/tkinter_test/.python-version)
％
```

・__Python 3.6.0（名称：TensorFlow）に変更__
・<font color="Red">__動かなくなる__</font>

```bash:Terminal
％ python tkinter_ner_svo_list_filter_by_target_word_and_case_file_dialog3.py
Traceback (most recent call last):
  File "tkinter_ner_svo_list_filter_by_target_word_and_case_file_dialog3.py", line 2, in <module>
    import tkinter, tkinter.filedialog, tkinter.messagebox, spacy, collections, CaboCha, os, os.path,docx, openpyxl, pptx
  File "/Users/ocean/.pyenv/versions/3.6.0/lib/python3.6/tkinter/__init__.py", line 36, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'
%
```

・ __Python 3.9.0（名称：TensorFlow）に変更__

```bash:Terminal
％ pyenv local 3.9.0
```

・__正常に動作する__

```bash:Terminal                                                         
％ python tkinter_ner_svo_list_filter_by_target_word_and_case_file_dialog3.py

％ 
```

![スクリーンショット 2020-12-10 14.43.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/d5814ed2-8c1c-effe-8ba6-54bab231e81d.png)

___

##まとめ

__*Python*のどのバージョンの環境__で、以下を行ったかを、自分できちんと認識しておこう。

1. ライブラリを入れるとき
2. スクリプトファイルをダウンロードしてくるとき
3. スクリプトファイルを自作するとき

__*Tips*__

a. __*pyenv versions*__で、いま__どのバージョンのPython環境にいるのか__を確認できる。
b. __*pip list*__で、いまいる環境で__インストール済みの*Python module*の名前とバージョン__を調べることができる。