3
我有兩個Python 2.6的文件,/code/x/X.py
:爲什麼這種絕對導入在Python中不起作用?
import imp
print 'running'
logging = imp.load_source('logging', '/code/y/logging.py')
...和/code/y/logging.py
:
運行X.py
打印:
running
['/code/x', '/usr/lib/pymodules/python2.6', '/usr/lib/pymodules/python2.6/gtk-2.0', '/usr/lib/python2.6', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages/gst-0.10', '/usr/lib/python2.6/dist-packages/gtk-2.0', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/plat-linux2', '/usr/local/lib/python2.6/dist-packages']
/code/x
<module 'logging' from '/code/y/logging.py'>
爲什麼沒有from __future__ import absolute_import
強制將import logging
導入爲絕對導入,而不是本地導入?換句話說,爲什麼我沒有看到系統日誌記錄模塊?
你的問題實際上解決了我的解決方案...如果這是有道理的。當不使用`imp.load_source`時,我經常遇到同樣的問題。即使您導入`absolute_import`,它仍然會在系統路徑之前查看腳本目錄。我通常通過彈出`sys.path [0]`來「解決」這個問題 - 但是當使用`imp.load_source`並將導入設置爲系統模塊名稱時,它仍然會被覆蓋。因此,使用`imp.load_source`而不是選擇系統模塊名稱是一個不錯的解決方案 - 比彈出`sys.path [0]`更好。那謝謝啦。 :) – edanfalls 2011-02-01 18:16:37