导入前确定Python包位置

时间:2011-05-05 14:23:08

标签: python import path

我希望在>导入之前获取包的位置。基本上我想做

import pkg
pkg_path = pkg.__file__

但无需import pkg。现在我正在做:

target = "pkg"
target_path = None
for p in sys.path:
    search_path = "%s/%s" % (p, target)
    if os.path.exists(search_path):
        target_path = search_path

但有几种情况不起作用(target不包含__init__.pytarget在压缩的EGG文件中。)

有没有更好的方式来获取target_path

谢谢,

伊恩

2 个答案:

答案 0 :(得分:5)

是的,有imp.find_module()

target_path = imp.find_module(target)

答案 1 :(得分:0)

您可以使用[__import__()][1],如下所示:

target_path = __import__('pkg').__file__
__import__()使用

import,其中一个用途是模块名称仅在运行时知道。