python模块导入自己而不是dist模块

时间:2013-07-27 23:01:35

标签: python

我有一个名为mimetypes的python模块,它与libx.something相关。这个mimetypes模块包装了python mimetypes模块,但仅限于魔术模块不存在的情况。但是,当我的应用程序导入'libx.something.mimetypes'并且该模块然后导入'mimetypes'时,它会相对于'libx.something'自行导入。

如何强制导入相对于python dist路径而不是当前模块路径工作,以便我可以导入python mimetypes模块?

  File "/usr/local/lib/python2.7/dist-packages/libx/something/mimetypes.py", line 16, in get
    return mimetypes.guess_type(path)
Error: 'module' object has no attribute 'guess_type'

但是...

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mimetypes
>>> mimetypes.guess_type('a.txt')
('text/plain', None)

1 个答案:

答案 0 :(得分:2)

使用:

from __future__ import absolute_import

libx.something.mimetypes模块中,或者给它一个不同的名称。

有关细节的详细信息,请参阅PEP 328 - Imports: Multi-Line and Absolute/Relative。在Python 2中,在搜索模块路径之前,首先相对于当前模块解析导入;除非使用新的相对导入语法(from . import mimetypes等),否则使用上述语句导入始终绝对值。

该语句切换每个模块的导入行为 ;将其添加到libx.something.mimetypes模块不会改变在其他模块中导入的行为。