2017-04-26 17 views
0

モジュールabc.pyから関数foo()をインポートしたい しかし、abc.pyには、Pythonで利用できないモジュールに依存する他の関数が含まれています。モジュールの依存関係のないモジュールから関数をインポートする

:私が見つけた、私がJythonのようabc.py実行するためのImageJを使用しているため)、Pythonインタプリタにインポート

一つの解決策は、 ==のような「メイン」のチェック、内部問題のある輸入品を置くことです

# abc.py 
def foo(): 
    print("Hello, World!") 

def run_main_function(): 
    foo() 
    ...other stuff using IJ... 

if __name__ == "__main__": 
    from ij import IJ 
    run_main_function() 

だから私は試してみるo fooを別のスクリプトのdef.pyからインポートする。例:

# def.py 
from abc import foo 

def other_func(): 
    foo() 

if __name__ == "__main__": 
    other_func() 

これは機能する。しかし、私が通常のやり方で、スクリプトの先頭にインポートを置くと、エラーが発生します。「ij」という名前のモジュールはありません。この問題の解決策があるかどうかを知りたいですか?具体的には、私はスクリプトの先頭にインポートを置いて、def.pyの中でabc.pyの依存関係なしに関数をインポートすると言っていますか?

答えて

0

importステートメントに.py拡張子を含めないでください。読み込みする必要があります。

from abc import foo 
+0

もちろん、これは質問を書いたときのタイプ/省略であり、指摘してくれてありがとう。 – MMagician

0

I would like to know if there is a solution to this problem? Specifically, that I put the imports at the top of the script and then within def.py I say to import just the function, without dependencies of abc.py?

は限り私が知っている、それはPythonの作品という方法です。あなたは常に利用可能ではない場合、それを使用する関数にそのインポートを置くべきです。

def run_main_function(): 
    from ij import IJ 
    foo() 

また、それは標準ライブラリモジュールの、モジュール名としてabcを使用しないでください:Abstract Base Class 2.7Abstract Base Class 3.6

編集:Kind Strangerが述べたようにインポートするとき.py末尾使用しないでください。

関連する問題