9

私はimportlibpython3(3.6)で使用しようとしています。

ディレクトリ構造

main.py

#Note: I will only modify line 4 that uses importlib
import importlib
if __name__ == '__main__':
    print("In main.py")
    hello = importlib.import_module('hello', package='./')
    print("Loaded hello.py")
    hello.hello()

こんにちは。

def hello():
    print('Hello world')

フォルダー/hello.py

def hello():
    print('Hello world in folder')

観察

私が行った場合

hello = importlib.import_module('hello', package='./')また

hello = importlib.import_module('hello')

ルート フォルダからhello.pyをインポートして出力しhello worldます。

私が行った場合

hello = importlib.import_module('folder.hello')

ルート フォルダからfolder/hello.pyをインポートして出力しhello world in folderます。

でももしそうなら

hello = importlib.import_module('hello', package='folder')また

hello = importlib.import_module('hello', package='./folder')

エラーが発生します

Traceback (most recent call last):
  File "main.py", line 4, in <module>
    hello = importlib.import_module('hello', package='./folder')
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'hello'

問題

ここで何が起こっているのかわかりません。私のpythonモジュールとパッケージの理解には何か問題があると確信しています。これが予想される動作である理由を誰かが説明できますか?

4

2 に答える 2