我正在为嵌套的matplotlib(MPL)库编写文档(个人),它与MPL自己提供的不同,由感兴趣的子模块包提供。我正在编写Python脚本,我希望它能从未来的MPL版本中自动生成文档。
我选择了感兴趣的子模块/包,并希望列出它们的主类,我将从中生成列表并使用pydoc
对其进行处理
问题是我找不到一种方法来指示Python从字符串加载子模块。下面是我尝试的例子:
import matplotlib.text as text
x = dir(text)
。
i = __import__('matplotlib.text')
y = dir(i)
。
j = __import__('matplotlib')
z = dir(j)
以下是通过pprint对上述列表进行的3种方式比较:
我不明白y
对象中加载了什么-它是matplotlib
基础加上其他东西,但它缺少我想要的信息,即matplotlib.text
包中的主类。它是屏幕截图中顶部蓝色的部分(x
列表)
请不要建议狮身人面像作为不同的方法。
7条答案
按热度按时间zz2j4svz1#
__import__
函数可能有点难以理解。如果您更改
至
则
i
将引用matplotlib.text
。在Python 3.1或更高版本中,可以使用
importlib
:一些注意事项
./feature/email.py
)导入内容,代码将类似于importlib.import_module("feature.email")
__init__.py
,你就不能导入任何东西(在决定是否要保留文件以实现向后兼容之前,请参见caveats,例如与pytest
兼容)。brccelvz2#
importlib.import_module
是您要查找的内容。它返回导入的模块。此后,您可以访问模块中的任何内容,如
text.myclass
、text.myfunction
等。a5g8bdjr3#
我花了一些时间尝试从列表中导入模块,这是我大部分时间的思路--但是我没有掌握___import____的用法--
下面是如何从字符串导入模块,并获得与导入相同的行为。还可以尝试/排 debugging 误情况。:)
是的,对于python 2.7〉,您有其他选择-但是对于2.6〈,这是可行的。
6mzjoqzu4#
除了使用
importlib
,还可以使用exec
方法从字符串变量导入模块。这里我展示了一个使用
exec
方法从itertools
包导入combinations
方法的示例:输出量:
lrpiutwd5#
模块自动安装并从列表导入
下面的脚本可以很好地与子模块和pseudo submodules配合使用。
测试项目:
mefy6pfw6#
我开发了以下3个有用的函数:
每次我想重新加载一个新的示例时,我只需要像这样调用getInstance():
最后,我可以调用新示例中的所有函数:
此处唯一的特殊性是自定义示例的参数列表(param1、param2、param3)。
ocebsuys7#
您还可以使用
exec
内置函数,将任何字符串作为Python代码执行。对我来说,这是解决我的问题最具可读性的方法。