質問: コーリー・アルソフの独学プログラマーで勉強中です。 p.121の【ほかのモジュールをインポートする】で躓いています。 デスクトップにtstpフォルダを作成して、そのフォルダにhello.pyファイルを作成しました。同じtstpファイルにproject.pyという別のファイルを作成し、インポートしようとしましたが、エラー(ModuleNotFoundError: No module named 'hello')が出てしまいます。 何度か調べながらモジュールの作成とインポートのやり方を調べて実行しましたが、エラーです。 Python3・MacBookを使用しています。 回答を受けての追記 --------- nekketsuuuさんご回答ありがとうございます! しかし、いまだに解決できておりません・・・。 > > 可能性1: 同じフォルダに無い > > > hello.py と project.py が共にあるはずのディレクトリにターミナルで移動し、ls > > で確かにそのふたつのファイルが存在するか確かめてください。ファイルをきちんと保存していなかったり、ファイルを置く場所が違ったりすると、存在しないかもしれません。 > > > →デスクトップに作成したtstpフォルダの中にhello.pyとproject.pyの2つが入っています。 lsでファイルが存在するかの調べ方は、具体的にどのように行ったらよろしいでしょうか。 いろんなウェブサイトを見ていてもどれを参考にしたら良いか分からない状態です。。。 よろしくお願いいたします。
回答: 可能性1: 同じフォルダに無い `hello.py` と `project.py` が共にあるはずのディレクトリにターミナルで移動し、`ls` で確かにそのふたつのファイルが存在するか確かめてください。ファイルをきちんと保存していなかったり、ファイルを置く場所が違ったりすると、存在しないかもしれません。 ``` $ cd tstp $ ls hello.py project.py ``` (上のようにファイルがふたつ表示されるはず) 可能性2: 打ち間違い ファイル名 `hello.py` やモジュールインポート部分 `import hello` で打ち間違いをしていないか確かめてください。全角の `hello` でも駄目です。 可能性3: 実行するときのディレクトリが違う 作ったプログラムを実行するとき、おそらく `python project.py` みたいに打ち込んでらっしゃるかと思います。このとき、`project.py` があるディレクトリに `cd` してから実行しているか確かめてください。 ``` $ cd tstp $ ls hello.py project.py $ python project.py ``` `import hello` を実行するとき、Python はモジュール `hello` が無いかどうか様々なパスを探します。自分で作った `hello.py` が何もせずとも見つかるのは、この探索パスの中にカレントディレクトリが入っているからです。もしカレントディレクトリが `hello.py` や `project.py` のあるディレクトリでない場合、見つけられずに `ModuleNotFoundError` になります。