これを言語で行う方法はありません。__future__この意味で、インポートをグローバルにすることはできません。(まあ、おそらく通常のimportステートメントを何か複雑なものに置き換えることができます。Futureステートメントimpのドキュメントを参照して「Codecompiledby…」までスクロールしてください。しかし、このようなものはほぼ間違いなく悪い考えです。)
その理由は、from __future__ import division実際には通常のインポートではないためです。または、むしろ、それは通常のインポート以上のものです。実際には、検査できるという名前が付けdivisionられますが、その値を指定しても効果はありません。したがって、他のモジュールに名前を渡しても、それらのモジュールには影響しません。__future__通常のインポートに加えて、Pythonには、モジュールの上部またはインタラクティブインタープリターでインポートを検出し、コードのコンパイル方法を変更する特別な魔法があります。すべての詳細が必要な場合は、「実際のインポート」部分についてはfutureを、「魔法」部分についてはFutureステートメントを参照してください。
そして、これを可能にする構成ファイルはありません。ただし、コマンドラインパラメータがあります。
python -Qnew main.py
from __future__ import divisionこれは、どこでも行うのと同じ効果があります。
これを#!行に追加したり、シェルにalias pyfuturediv='python -Qnew'(またはalias python='python -Qnew')追加したりすることができます。これは、目的に応じた構成ファイルと同じくらい良いものです。
しかし、実際には、モジュールBが新しいスタイルの分割を確実に取得するようにしたい場合は、最初にBで宣言を行う必要があります。__future__
または、もちろん、2.3-2.7の代わりにPython3.0+用に書くこともできます。(コア開発者の中には、コマンドライン引数を持つことに反対している人もいることに注意してください。「機能Xをグローバルに取得する正しい方法は、Pythonのバージョン>=機能XのMandatoryReleaseを使用//することです」 //。
もう1つの可能性は、Python 3.3に近いコードを記述し、2.4-2.7(および3.0-3.2)で正しく動作させるように設計されたモジュールである6を使用することです。たとえば、print関数は取得できませんが、print_まったく同じように機能する関数は取得できます。Unicodeリテラルは取得できませんが、u()偽のリテラルを取得できます。これは、ソースでのUTF-8エンコーディング宣言と合わせて、ほぼ十分です。__future__また、 <code> StringIOやBytesIO、exec関数としての関数など、取得できないものもたくさんありますnext。
1000個のソースファイルがあり、それらをすべて編集するのが面倒な場合は、を使用するか、除算を修正するオプションだけを
sed使用するか、または…</ p>3to2