2017-10-12 6 views
0

インポートした場合、私のプログラムのエラー出力を自動的に変更するモジュールを書きました。私が書いたほぼすべてのPythonコードでそれを持つことは非常に便利です。端末からPythonプログラムを実行しているときにモジュールを追加します

このように私が書くすべてのコードにimport my_errorhookという行を追加したくないのに、自動的にこの行を追加したいとします。

this answer私は、pythonの動作を直接変更しないでください。だから私は、

python --importModule my_errorhook main.py 

のようなものをコマンドラインを変更し、自動的にパラメータを追加するpythonコマンドを上書きするbashrcににエイリアスを定義について考えました。このような行動を達成する方法はありますか?

+0

にあなたはそのような 'python_err'か何かのようなカスタムPythonコマンドを定義してもあなたの' python'コマンドを維持することができます。 – Ankirama

+0

便利な音ですが、「明示的なものは暗黙的なものよりも優れています」ということに留意してください。しかし、エラーフックはエラー出力にしか影響しないので、メインコードを読むときに 'my_errorhook'について本当に知る必要がないのであれば大したことではないと思います。ところで、Python REPLを頻繁に使用する場合は、PYTHONSTARTUPという名前の起動スクリプトに 'my_errorhook'を追加することができます。 –

+0

@ PM2Ringそのアプローチも良いと思います! PYTHONSTARTUPスクリプトを編集するにはどうしたらいいですか? – Jonas

答えて

0

--importModuleのようなものは、pythonのコマンドラインではありません。明示的にインポートせずにコードを受け入れる唯一の方法は、組み込みのモジュールに関数を置くことです。しかし、これは適切な設計なしにコードを維持するのが難しくなるため、推奨されない方法です。

あなたのpythonファイルmain.pyがプログラム全体のエントリーポイントであるとしましょう。今度は別のファイルbootstrap.pyを作成して、新しいファイルに以下のコードを入れることができます。

import main 

__builtins__.func = lambda x: x>=0 
main.main() 

次に、機能func()をインポートせずにすべてのモジュールから呼び出すことができます。例えばmain.py

def main(): 
    ... 
    print(func(1)) 
    ... 
関連する問題