2017-12-12 1 views
0

コードをインポートする際に問題がないモジュールを動的にインポートすることができず、理由がわかりません。Python3:importlibとimportlib.import_moduleの動作が異なりますか?

私は次があります。

> ls lib 
__init__.py  main.py 

initファイルは空です。以下の作品:

> python3 
Python 3.4.3 (default, Oct 14 2015, 20:28:29) 
[GCC 4.8.4] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import lib.main 
>>> lib.main.sayyay() 
yay 

次は動作しません:

> python3 
Python 3.4.3 (default, Oct 14 2015, 20:28:29) 
[GCC 4.8.4] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import importlib 
>>> importlib.import_module("lib.main") 
<module 'lib.main' from '/some/path/lib/main.py'> 
>>> lib.main.sayyay() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'lib' is not defined 

私は例えば、のimportlibのドキュメントだけでなく、ここではSOの回答のカップルを読みました、How to import a module in Python with importlib.import_moduleDynamically import a method in a file, from a string

しかし、私は何が欠けていますか?

答えて

1

import_moduleインポートしたモジュールを返します。 したがって、あなたは、インポートされたモジュールに名前を付け、ちょうどlib.main

>>> lib_main = importlib.import_module("lib.main") 
>>> lib_main.sayyay() 
+0

予想外だったああ、のようにこれを使用する必要があります。しかし、私はこれがどのように役立つかを見ています。ありがとうございました。 – BaCh

関連する問題