编程语言
首页 > 编程语言> > 为什么这种绝对导入在Python中不起作用?

为什么这种绝对导入在Python中不起作用?

作者:互联网

我有两个Python 2.6文件/code/x/X.py:

import imp
print 'running'
logging = imp.load_source('logging', '/code/y/logging.py')

…和/code/y/logging.py:

from __future__ import absolute_import
import logging as _logging

import sys, os
print sys.path
print os.getcwd()
print _logging

运行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不强制将导入日志记录导入为绝对记录,而不是本地记录?换句话说,为什么我看不到系统日志记录模块?

解决方法:

问题出在imp.load_source命令.第一个参数是它在其下注册模块的名称,随后的导入将在查找路径之前先查找已加载的模块.更改行以使用其他名称,例如:

logging = imp.load_source('logx', '/code/y/logging.py')

…解决了这个问题.

标签:python-2-6,import,python
来源: https://codeday.me/bug/20191208/2093861.html