2017-07-27 9 views
1

a.pyにいくつかの関数を書きました。私は pythonバイナリでa.pyを実行します。 a.pyの内部では、私は利用できないモジュールをインポートする別のファイルから関数をインポートしますか?

import some_module 

def simple_function(): 
    ... 

def complex_function(): 
    some_module.some_func() 

は今、私は別のpython(ソフトウェア・バンドルのインストール)で実行されなければならない、b.pysimple_function()をインポートする必要があり、これのpythonはsome_moduleがインストールされていません。

b.py(これにはfrom a import simple_functionという行が含まれています)をソフトウェアバンドルのpythonで実行すると、このエラーが予想どおりに発生しました。

ImportError: No module named 'some_module' 

周囲には道がありますか?ご覧のとおり、simple_function()にはsome_moduleは必要ありません。


1つの解決策は、インポートステートメントをcomplex_functionに入れることです。

def simple_function(): 
    ... 

def complex_function(): 
    import some_module 
    some_module.some_func() 

しかし、私は確かにリンターとフォーマットチェッカーはそれについて文句を言うでしょう。より良いソリューション?

答えて

1

解決策は、複雑な機能を別個のモジュールに分割することです。

モジュール内で関数をインポートすると、モジュール全体がインポートされます。

他のソリューションは、他のPythonのインストールでsome_module ...

+0

感謝をインストールすることです。私は最初の解決策をとるつもりです。いくつかのソフトウェアバンドルされたpythonはdevバージョンではなく、 'Python.h'もありません - モジュールをインストールするのは本当に難しいです... –

+0

python環境を作るためにminicondaを使うことを強くお勧めします。 https://conda.io/docs/install/quick.html?highlight=mini – Alexander

関連する問題