2017-08-25 4 views
0

私が開発した関数のpythonモジュールを作成しました。このモジュールにはいくつかのインポートがありますが、これらはPythonにネイティブではなく、インストールする必要があります。子インポートなしのファイルから関数をインポート

私は、このモジュールの関数にアクセスするためのPythonスクリプトが必要なインスタンスが1つありますが、モジュールにすでに含まれている他のすべてのインポートを試してみることをお勧めしません。私は、このセットアップが以下のようになっているかの非常に基本的な例を作成しました。例えば


#this is the module, named MOD.py 
import win32con 
def func1(): 
    data = win32con.function() 
    return data 
def func2(): 
    return do_action() 


#this is the exterior script 
from MOD import func2 
data = func2() 

なぜそれはまだfunc2のは、それを使用していないにもかかわらず、MOD.py内win32conモジュールをインポートしようとすることですか?もちろん、モジュールがインストールされていない場合は、win32con行でImportErrorを取得します。私は、たとえそれを使用しないコードを実行するたびに、これらのモジュールをマシンにインストールする必要はありません。インポートのみfunc1の中で使用されている場合

+0

、あなたはこれを再考したいかもしれません。つまり、1つだけでなく複数のモジュールを使用します。 – cdarke

+0

それを必要としないモジュールもそれをインポートしないように、なぜリファクタリングしないのですか? – jonrsharpe

答えて

1

、あなたはfunc1の中でそれをインポートすることができます:それはあなたが一つのモジュールに無関係な機能をグループ化している表示されます

#this is the module, named MOD.py 
def func1(): 
    import win32con 
    data = win32con.function() 
    return data 
def func2(): 
    return do_action() 
+0

これは 'func1()'が呼ばれるたびにファイルを読み返すことを意味しますか? – Barmar

+0

いいえ、デフォルトでは、モジュールは一度だけロードされます。 – cdarke

関連する問題