我希望在>>导入之前获取包的位置。基本上我想做
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__.py
,target
在压缩的EGG文件中。)
有没有更好的方式来获取target_path
?
谢谢,
伊恩
答案 0 :(得分:5)
是的,有imp.find_module()
:
target_path = imp.find_module(target)
答案 1 :(得分:0)
您可以使用[__import__()][1]
,如下所示:
target_path = __import__('pkg').__file__
__import__()
使用 import
,其中一个用途是模块名称仅在运行时知道。