当前位置: 首页 > 面试题库 >

如何使用__import__函数从子模块导入名称?

冯枫
2023-03-14
问题内容

我正在尝试from foo.bar import object使用该__import__函数进行复制,但似乎遇到了麻烦。

一个简单的例子from glob import glob很简单:glob = __import__("glob").glob

我遇到的问题是我正在从子包中导入名称(即from foo.bar):

所以我想要的是

string_to_import = "bar"
object = __import__("foo." + string_to_import).object

但这只是导入了顶级foo包,而不是foo.bar子包:

__import__("foo.bar")
<module 'foo' from 'foo/__init__.pyc'>

问题答案:

__import__函数将返回包的顶级模块,除非您传递了非空fromlist参数:

_temp = __import__('foo.bar', fromlist=['object']) 
object = _temp.object

请参阅该__import__函数的Python文档。



 类似资料:
  • 问题内容: 给定一个带有模块名称的字符串,如何将模块中的所有内容导入,就像调用过的一样: 即给定的字符串S =“ module”,如何获得以下等效: 这似乎没有达到预期的效果(因为它没有导入任何东西)。 问题答案: 请重新考虑。唯一比 魔术 更糟糕的是。 __ 如果您确实要:

  • 我有一个这样的目录: 我可以这样导入父模块: 那么,既然我已经有了父模块,那么获取子模块的最佳方法是什么?我已经尝试了,,等。 有什么建议吗? 谢谢

  • 问题内容: 尝试使用别名时-这很常见,我很惊讶地看到以下结果: 创建一个别名 使用别名导入其中包含的模块 python中是否还有其他语法/等效项可用于导入模块? 问题答案: 使用并 不会 创建一个别名。您误解了导入系统。 导入有两件事: 将模块加载到内存中,并将结果存储在中。此操作仅执行 一次 ;后续导入将重用已经加载的模块对象。 在当前名称空间中绑定一个或多个名称。 该语法使您可以在最后一步中控

  • 问题内容: 我已尝试找到有关最佳使用还是全面的指南。我刚开始使用Python,并且正在尝试着眼于最佳实践。 基本上,我希望有人能分享他们的经验,其他开发人员有什么喜好,以及避免遇到麻烦的最佳方法是什么? 问题答案: 和之间的区别主要是主观的。选择最喜欢的一个,并在使用中保持一致。这里有一些要点可以帮助你做出决定。 优点: - 减少维护你的import报表。无需添加任何其他导入即可开始使用模块中的另

  • 我有一个使用git子模块的项目。在我的python文件中,我想在子模块项目中使用另一个python文件中的函数。 为了工作,我必须将init.py文件添加到路径中的所有子文件夹中。我的文件夹树如下: 有没有办法让它在不接触mygitsubmodule的情况下工作? 谢谢

  • 我在Pycharm中有一个python项目,其中有一个嵌套的Git子模块。以下是文件夹结构: 中的导入结构如下: 但是,Pycharm没有意识到这一点,而是希望我拥有以下内容: 这是有问题的,因为我不想更改中的所有导入(这似乎不是一个好的实践,也不可扩展),而且中有破折号,这对于导入来说不是有效的Python语法(我无法重命名repo)。 我还需要一种从我的代码中导入的方法。像这样的东西: 但当然