我有我自己的模塊中重寫問題內建在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。進一步的測試表明,「從.logging導入記錄」看起來並不像PEP 328所示。我仍然不明白爲什麼「從package.logging導入日誌記錄」不起作用。這不是絕對的進口嗎? – kierse 2009-08-11 23:57:02
你使用的是什麼版本的python?如果它的舊版本(比如說2.4)相對導入可能不起作用,或者至少不起作用。 – Soviut 2009-08-12 01:40:55
我正在運行Python 2.6.2 – kierse 2009-08-12 19:31:01