1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonでモジュールがインポートできない

Last updated at Posted at 2021-08-31

参考書を写経しているとどこかでつまる
今回はモジュールをインストールしたはずが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に問い合わせたときに帰ってくるパス的な感じ??

####分かった気になったので環境変数をいじってみる
環境変数.JPG

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
>>> 

無事に入った!!!

1
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?