python-在路径中加载每个.py文件-imp.load_module抱怨相对导入
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-在路径中加载每个.py文件-imp.load_module抱怨相对导入,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1852字,纯文字阅读大概需要3分钟。
内容图文
![python-在路径中加载每个.py文件-imp.load_module抱怨相对导入](/upload/InfoBanner/zyjiaocheng/689/a320ae6f102e4244bb814e2901298d08.jpg)
我正在尝试解析python源文件的给定路径,将每个文件和DoStuff?导入每个导入的模块.
def ParsePath(path):
for root, dirs, files in os.walk(path):
for source in (s for s in files if s.endswith(".py")):
name = os.path.splitext(os.path.basename(source))[0]
m = imp.load_module(name, *imp.find_module(name, [root]))
DoStuff(m)
上面的代码有效,但是无法识别包ValueError:尝试在非包中进行相对导入
我的问题基本上是,如何告诉imp.load_module给定的模块是软件包的一部分?
解决方法:
您不能直接告诉导入程序协议方法load_module给定的模块是软件包的一部分.取自PEP 302 New Import Hooks
The built-in
__import__
function
(known as PyImport_ImportModuleEx
in import.c) will then check to see whether the module doing the
import is a package or a submodule of a package. If it is indeed a
(submodule of a) package, it first tries to do the import relative
to the package (the parent package for a submodule). For example if
a package named “spam” does “import eggs”, it will first look for
a
module named “spam.eggs”. If that fails, the import continues as an
absolute import: it will look for a module named “eggs”. Dotted
name imports work pretty much the same: if package “spam” does
“import eggs.bacon” (and “spam.eggs” exists and is itself a
package), “spam.eggs.bacon” is tried. If that fails “eggs.bacon” is
tried. (There are more subtleties that are not described here, but
these are not relevant for implementers of the Importer
Protocol.)Deeper down in the mechanism, a dotted name import is split up by
its components. For “import spam.ham”, first an “import spam” is
done, and only when that succeeds is “ham” imported as a submodule
of “spam”.The Importer Protocol operates at this level of individual
imports. By the time an importer gets a request for
“spam.ham”,
module “spam” has already been imported.
然后,您必须模拟内置导入的功能并加载父包,然后再加载子模块.
内容总结
以上是互联网集市为您收集整理的python-在路径中加载每个.py文件-imp.load_module抱怨相对导入全部内容,希望文章能够帮你解决python-在路径中加载每个.py文件-imp.load_module抱怨相对导入所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。