2
__future__ importからabsolute_importは実際には何をしますか?
私がしている答えた私は、私が読んで理解に基づいて考えPythonで絶対的な輸入に関するご質問、Pythonの2.5変更履歴をとそれに付随するPEPを。ただし、Python 2.5をインストールしfrom __future__ import absolute_import、を適切に使用する例を作成しようとしたところ、状況がそれほど明確ではないことに気付きました。 上記のリンクされた変更ログから直接、このステートメントは、絶対的なインポートの変更に関する私の理解を正確に要約したものです。 次のようなパッケージディレクトリがあるとします。 pkg/ pkg/__init__.py pkg/main.py pkg/string.py これはおよびサブモジュールpkgを含むという名前のパッケージを定義します。pkg.mainpkg.string main.pyモジュールのコードを検討してください。ステートメントを実行するとどうなりimport stringますか?Python 2.4以前では、最初にパッケージのディレクトリを参照して相対インポートを実行し、pkg / string.pyを見つけて、そのファイルの内容をpkg.stringモジュールとしてインポートします。"string"そのpkg.mainモジュールは、モジュールの名前空間の名前にバインドされます。 だから私はこの正確なディレクトリ構造を作成しました: $ ls -R .: pkg/ ./pkg: __init__.py main.py string.py __init__.pyとstring.py空です。main.py次のコードが含まれています。 import string print string.ascii_uppercase 予想通り、Python 2.5でこれを実行すると、AttributeError: $ python2.5 pkg/main.py Traceback (most recent call last): File "pkg/main.py", line 2, in <module> print string.ascii_uppercase …