参考書を写経しているとどこかでつまる
今回はモジュールをインストールしたはずがIDLE上でimportできない事象について解決までの手順?をメモで残しておく
ちなみに、解決方法を先に書くとsys.path.append("フォルダパス")で一時的に追加するか、環境変数を弄って恒久対処の二択
####どんなエラーメッセージが出たか?
>>> import pyperclip
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
import pyperclip
ModuleNotFoundError: No module named 'pyperclip'
pyperclipをインポートしたいんだけどどうやら見つからないらしい・・・
おかしい、ちゃんとインストールしたはずなのに・・・
####コマンドプロンプト上でもう一度モジュールインストール
C:\Users\kuratsuka>pip install pyperclip
Requirement already satisfied: pyperclip in c:\users\kuratsuka\anaconda3\lib\site-packages (1.8.2)
あれ?もうあるよって返答が・・・
調べてみるとそもそもimport時はsys.pathを参照してモジュールを探すらしい
なのでsys.path上にプロンプトのディレクトリを参照先としてあるのかを確認する
>>> import sys
>>> import pprint
>>>
>>> pprint.pprint(sys.path)
['',
'C:\\Users\\kuratsuka\\AppData\\Local\\Programs\\Python\\Python39\\Lib\\idlelib',
'C:\\Users\\kuratsuka\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip',
'C:\\Users\\kuratsuka\\AppData\\Local\\Programs\\Python\\Python39\\DLLs',
'C:\\Users\\kuratsuka\\AppData\\Local\\Programs\\Python\\Python39\\lib',
'C:\\Users\\kuratsuka\\AppData\\Local\\Programs\\Python\\Python39',
'C:\\Users\\kuratsuka\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages']
>>>
ない・・・おかしい・・・
やはりanacondaをよくわからんけどヨシ!でインストールしたからなのかな???
とりあえずこの一覧に載せたい・・・!!
###sys.path.append()でパスを追記する
>>> sys.path.append("C:\Users\kuratsuka\anaconda3\Lib\site-packages")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
パスを素直にコピペするとSyntaxErrorを吐く、パスの区切りは「\」単体ではなく「\\」にしないと!
なのでもう一度書く
>>> sys.path.append("C:\\Users\\kuratsuka\\anaconda3\\Lib\\site-packages")
>>>
>>> pprint.pprint(sys.path)
['',
'C:\\Users\\kuratsuka\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages',
'C:\\Users\\kuratsuka\\anaconda3\\Lib\\site-packages']
>>>
>>> import pyperclip
>>>
エラー吐かずに読み込めた!!!
けどIDLE落とすとまた読み込めんぞ・・・?
どうやらsys.path.append()は一時追加的なものでずっとは続かないらしい
もう少し調べてみると環境変数でパス指定することでIDLEを落としても使えるようになるらしい
てか、環境変数ってなんだ??
「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典様
https://wa3.i-3-i.info/word11027.html
このサイトめちゃお世話になってる、環境変数が何となくわかった気がする
とりあえずIDLE(他プログラム)がWindowsに問い合わせたときに帰ってくるパス的な感じ??
Windows上で変数名を"PYTHONPATH"で指定したいパスを値に入れるとできる
もう一度IDLE再起動させて確認してみると・・・
>>> pprint.pprint(sys.path)
['',
'C:\\Users\\kuratsuka\\AppData\\Local\\Programs\\Python\\Python39\\Lib\\idlelib',
'C:\\Users\\kuratsuka\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages']
>>>
>>> import pyperclip
>>>
無事に入った!!!