私は自分のモジュールでビルドされたPythonのもの(特にロギングモジュール)を上書きすることに問題があります。ここに私のプロジェクトのレイアウトです:もう一つの絶対的なインポートの問題
run.py
package/
__init__.py
logging/
__init__.py
...
run.py
from package import main
main()
パッケージ/ __ init__.py
from __future__ import absolute_import
import logging
import logging.config
def main():
logging.config.fileConfig(...)
パッケージ/伐採それとして/ __ init__.py
class Logging(object):
pass
今のところ、上記のコードが動作します。できるだけ早く私はそうのようpackage.loggingからロギングクラスをインポートしようとして:
from __future__ import absolute_import
import logging
import logging.config
from package.logging import Logging
def main():
logging.config.fileConfig(...)
私はエラーを取得する:
AttributeError: 'module' object has no attribute 'config'
私はPEP 328リリースノートを読んで、絶対的な輸入があることがわかってきましたむしろ単純です。残念ながら、私はこれを理解することができませんでした。
私はここで何が欠けていますか?
あなたの例を使用すると動作するようです。しかし、ここでは、Loggingクラスをlogging.Loggingと呼ぶ必要があります。さらなるテストでは、PEP 328が示唆しているように、 ".logging import Loggingから"は動作していないようです。私はまだ "package.loggingインポートロギングから"が動作しない理由を理解できません。それは絶対的な輸入ではありませんか? – kierse
あなたはどのバージョンのpythonを使用していますか?古いバージョン(2.4など)の場合、相対インポートが機能しないか、少なくとも期待どおりに動作しない可能性があります。 – Soviut
私はPython 2.6.2を実行しています – kierse