首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python pth文件导入语句无效?

python pth文件导入语句无效?
EN

Stack Overflow用户
提问于 2012-12-12 22:45:36
回答 1查看 433关注 0票数 0

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

这是什么魔法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-13 01:15:29

从你的评论中,我猜你得到了一些模块的NameError异常,因为对.pth-files的用途感到困惑。

pth代表path。其目的是将路径添加到sys.path (pythonpath - Python在导入过程中用来查找模块的路径)。参见site module documentation

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

代码语言:javascript
复制
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-files实现"namespace" packages

代码语言:javascript
复制
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-files不是用来让模块名称出现在代码中的。要导入some_module,请在要使用它的每个模块的顶部添加:

代码语言:javascript
复制
import some_module
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13842178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档