pythonにて、単純なモジュールのインポートと、関数の呼び出しを試しているのですが、なぜかエラーとなってしまいます。
"no attribute"系のエラーを検索しましたが、当てはまる原因は見当たりません。
PCの環境起因などが考えられますでしょうか?
python
1# mymodule.py 2def test_func(): 3 print('hello') 4#ここまで 5 6# module_test.py 7import mymodule as mm 8 9mm.test_func() 10# ここまで 11 12上記を同じディレクトリに置いて、module_test.pyを実行。 13 14# 出力 15Traceback (most recent call last): 16 File "c:\work\python\test\module_test.py", line 3, in <module> 17 mm.test_func() 18AttributeError: module 'mymodule' has no attribute 'test_func' 19# ここまで
環境:
python: 3.10.2
Visual Studio Codeで実行していますが、コマンドラインから直接実行しても変わらず。
表示されていませんが、print('hello')の前には、インデントの空白があります。
module_test.pyの1行目と2行目の間に、実際には改行が入っていましたが、質問では省略しました。
エラーにline 3と出ているのはそのためです。
答えられるかわかりませんが(><)
mymodule.pyの内容をコピペしていただいて、その後ろに実行分をつけた単体のプログラム
つまり、
def test_func():
print('hello')
test_func()
これは動きますか?
ごめんなさい2行目はインデントが必要です。
インデントが全角スペースになっている?とかもないですよね…

Teratailの質問編集画面に「</>」というボタンがあるはずです。
ソースコードをこれで挟んで記入しなおしてください。
その中身をみんなコピペして手元でどう動くか再現できるためです。
ご存じと思いますがPythonは「インデントや大文字小文字のような些細な違いが全然些細でない」言語です。こういうポカヨケの意味でもコピペして同じコードを走らせて再現する、がとても大事になります。
ありがとうございます。使い方を理解しておりませんでした。
コード部分がわかるように整形しました。
私の環境(debian linux 11 64bit python 3.8.10)では問題なく実行できました。とりあえず、コードに問題はなさそう…かな。
ありがとうございました。原因がわからないのですが、自己解決しました。
教科書に載っているような、超基本のモジュールの使い方なので、動かないはずが無いですよね。。。
よかったです。

回答1件
あなたの回答
tips
プレビュー