相关疑难解决方法(0)

从字符串变量导入模块

我正在研究嵌套matplotlib(MPL)库的文档(个人),它与MPL自己提供的有趣的子模块包不同.我正在编写Python脚本,我希望将从未来的MPL版本中自动生成文档.
我选择了感兴趣的子模块/包,并希望列出我将生成列表并处理它的主要类pydoc

问题是我找不到一种方法来指示Python从字符串加载子模块.这是我尝试的例子:

import matplotlib.text as text
x = dir(text)
Run Code Online (Sandbox Code Playgroud)

.

i = __import__('matplotlib.text')
y = dir(i)
Run Code Online (Sandbox Code Playgroud)

.

j = __import__('matplotlib')
z = dir(j)
Run Code Online (Sandbox Code Playgroud)

以下是通过pprint对上述列表进行3种比较:

在此输入图像描述

我不明白在y对象中加载了什么- 它是基础matplotlib加上其他东西,但它缺少我想要的信息,而且它是matplotlib.text包中的主要类.这是截图(x列表)中的顶级蓝色部分

请不要建议Sphinx采用不同的方法.

python matplotlib

166
推荐指数
3
解决办法
12万
查看次数

使用字符串作为名称导入文件

可能重复:
Python中的动态模块导入

我打算在不久的某个时候制作一套文件,组织它的最好方法是有一个列表,该列表将位于文件的最顶层,之后将会出现一些荒谬的代码来处理该列表控制的内容及其运行方式.我只想写一次所说的列表,并且列表是这种格式的文件夹和文件名列表:

[(folder/filename, bool, bool, int), (folder/filename, bool, bool, int)]
Run Code Online (Sandbox Code Playgroud)

如你所见,folder/filename是相同的(有点).文件名是最后的文件夹名称.py,但进行导入XXX你不需要导入XXX.py,所以我没有看到这导致问题.

我面临的问题是使用这种方法导入...

for (testName, auto, hardware, bit) in testList:
    print(testName)
    paths = "\\" + testName
    print paths
    addpath(paths)
    sys.modules[testName] = testName # One of a few options I've seen suggested on the net
    print("Path Added")
    test = testName + ".Helloworld()"
    eval(test)
Run Code Online (Sandbox Code Playgroud)

因此,对于我所拥有的每个测试,打印名称,组装包含path("\\testName")的字符串,对于此示例,打印测试路径,然后将路径添加到list(sys.path.append(path)),然后打印以确认它发生,然后组装一个将由eval测试主模块执行的字符串,并最终对其进行评估.

如您所见,我目前必须在顶部有一个导入列表.我不能简单地做导入testName(内容testName是我想导入的模块的名称),因为它会尝试查找一个名为的模块testName,而不是一个名为内容的模块testName.

我已经看到了一些这样做的例子,但在我的情况下找不到哪些工作.如果有人可以真正抛出一大堆代码来完成那将是美妙的.

我还要求我没有挂起,绘制,也没有使用eval,它在一个非常受控制的环境中使用(它循环的列表在.py文件中,所以没有"最终用户"应该一塌糊涂).

python string import path

15
推荐指数
2
解决办法
3万
查看次数

标签 统计

python ×2

import ×1

matplotlib ×1

path ×1

string ×1