python pth文件导入语句无效?

时间:2012-12-12 14:45:36

标签: python

从pth文件执行的import语句似乎执行正常。但我似乎无法访问以这种方式导入的任何模块。

这是什么巫术?

1 个答案:

答案 0 :(得分:3)

从您的评论中我猜测,由于对.pth - 文件的目的混淆,您正在获取某些模块的NameError异常。

pth代表path。目的是向sys.path添加路径(pythonpath - Python在导入期间用于查找模块的路径)。请参阅site module documentation

import开头的行可以包含任何代码,但通常会修改sys.path。例如,setuptools机器:

import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)

另一种常见情况是.pth - 文件用于实现"namespace" packages

import sys,types,os; p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('zope',)); ie = os.path.exists(os.path.join(p,'__init__.py')); m = not ie and sys.modules.setdefault('zope',types.ModuleType('zope')); mp = (m or []) and m.__dict__.setdefault('__path__',[]); (p not in mp) and mp.append(p)

.pth - 文件不在您的代码中显示模块名称。要导入some_module,请在每个模块的顶部添加您要使用它的位置:

import some_module