2009-08-29 8 views
3

私のすべてのモジュールにデフォルトのインポートを置くことができる場所はありますか?Python:すべてのモジュールにデフォルトのインポートを置くことができる場所はありますか?

+2

デフォルトのインポートは必要ありません。インポートを明示的にして、インポートされているものが分かるようにします。それ以外の場合は、見つけにくい名前空間の競合が発生する可能性があります。 –

+0

@Lennart:彼のすべてのインポートが 'module import names'ではなく' import module'であれば本当です。しかし、明示的なインポートを使用する方が良いです - 主な理由は、これがプログラムのさまざまな部分を分割するのに役立ちます。私は下の私の答えで詳述しようとしています。 –

+0

@LennartRegebro ilya nの答えと、彼が提示するコンセプトの名前は何だと思いますか(このトピックについてさらに質問がありますか?) –

答えて

3

はい、別のモジュールを作成して自分のものにインポートするだけです。

例:標準のガイドラインに従って、from module import *を避けるべきである

# my_imports.py 
'''Here go all of my imports''' 
import sys 
import functools 
from contextlib import contextmanager # This is a long name, no chance to confuse it. 
.... 


# something1.py 
'''One of my project files.''' 
from my_imports import * 
.... 

# something2.py 
'''Another project file.''' 
from my_imports import * 
.... 

注意。一般的なインポートが必要ないくつかのファイルを持つ小さなプロジェクトを管理している場合は、from module import *でうまくいくと思っていますが、のコードをリファクタリングして別のファイルをインポートする必要がありません。 Pythonシェルを使用しているときに、デフォルトの輸入をしたい場合はまた、あなたがシェルを起動するたびに実行されるPythonのファイルを指すようにPYTHONSTARTUP環境変数を設定することができ

# something1.py 
'''One of my project files. Takes care of main cycle.''' 
import sys 
.... 

# something2.py 
'''Another project file. Main program logic.''' 
import functools 
from contextlib import contextmanager # This is a long name, no chance to confuse it. 
.... 
+1

*はい、別のモジュールを作成してあなたのものにインポートするだけです。* '__future__'からのインポートでは機能しません。 –

3

だから、このようにそれを行います。すべてのデフォルトインポートをこのファイルに置きます。

関連する問題