

コーリー・アルソフの独学プログラマーで勉強中です。  
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の２つが入っています。  
lsでファイルが存在するかの調べ方は、具体的にどのように行ったらよろしいでしょうか。  
いろんなウェブサイトを見ていてもどれを参考にしたら良いか分からない状態です。。。

よろしくお願いいたします。


CC BY-SA 4.0
2019-04-09T13:12:38.273
54055
2021-04-27T07:59:50.017
2019-04-14T06:10:56.890
19110
32858
question
python python3
モジュールをインポートする方法：ModuleNotFoundError: No module named 'hello'


## 可能性1: 同じフォルダに無い

`hello.py` と `project.py` が共にあるはずのディレクトリにターミナルで移動し、`ls`
で確かにそのふたつのファイルが存在するか確かめてください。ファイルをきちんと保存していなかったり、ファイルを置く場所が違ったりすると、存在しないかもしれません。

[code]

    $ cd tstp
    $ ls
    hello.py  project.py
    
[/code]

(上のようにファイルがふたつ表示されるはず)

## 可能性2: 打ち間違い

ファイル名 `hello.py` やモジュールインポート部分 `import hello` で打ち間違いをしていないか確かめてください。全角の
`ｈｅｌｌｏ` でも駄目です。

## 可能性3: 実行するときのディレクトリが違う

作ったプログラムを実行するとき、おそらく `python project.py`
みたいに打ち込んでらっしゃるかと思います。このとき、`project.py` があるディレクトリに `cd` してから実行しているか確かめてください。

[code]

    $ cd tstp
    $ ls
    hello.py  project.py
    $ python project.py
    
[/code]

`import hello` を実行するとき、Python はモジュール `hello` が無いかどうか様々なパスを探します。自分で作った
`hello.py` が何もせずとも見つかるのは、この探索パスの中にカレントディレクトリが入っているからです。もしカレントディレクトリが
`hello.py` や `project.py` のあるディレクトリでない場合、見つけられずに `ModuleNotFoundError` になります。


CC BY-SA 4.0
2019-04-09T13:44:31.733
54056
2019-04-14T06:13:29.633
2019-04-14T06:13:29.633
19110
19110
54055
answer


私も『独学プログラマー』を読んで、 Mac上でPython3を勉強中です。

> lsでファイルが存在するかの調べ方は、具体的にどのように行ったらよろしいでしょうか。

この部分についてコメントします。

『独学プログラマー』の「第16章
Bash」（p.190〜）には、Mac上で「ターミナル」を起動し、ディレクトリ（＝フォルダ）を移動したり、lsでファイルを確認したりする方法が書かれています。  
先にこちらの章を読まれてはどうでしょうか。


CC BY-SA 4.0
2019-04-14T05:38:49.037
54156
2019-04-14T05:38:49.037
32910
54055
answer


私も『独学プログラマー』を読んで、Windowsで勉強中です。  
まず、この本の独特の言い回しについてコメントさせてください。  
フォルダーを作る場所は、指定されていません。  
また、読み進めると、`module1`で `>>Hello!` と表示されます。

> この動作は・・・、そのモジュールがインポートされたときに実行されたくないでしょう。

と結んでいます。  
一連の流れなのだと自分は解釈しました。


CC BY-SA 4.0
2021-04-27T07:35:17.703
75533
2021-04-27T07:59:50.017
2021-04-27T07:59:50.017
3060
45018
54055
answer