问题标签 [python-importlib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2886 浏览

python - Python ImportLib'没有命名模块'

我正在尝试将变量用作从 Python 中导入的模块。

使用 ImportLib 我已经成功地找到了测试...

...通过打印 select_module 我可以看到它成功地找到了脚本:

但是,当我尝试在代码中使用此变量从中导入模块时:

程序退出并出现以下错误:

我试图将一个init .py 文件添加到脚本所在的主目录和 /test 目录,但无济于事。我确定这只是我想念的愚蠢的小东西-有人知道吗?

0 投票
1 回答
12453 浏览

python - Python importlib import_module 模块的相对导入

根据这个答案,您可以像importlib这样import_module使用相对导入:

为什么相对导入对 sklearn.feature_extraction.text 不起作用?

我验证这text是一个模块:

退货

编辑

“不起作用”是指它不导入模块。

我正在使用 Python 3.4

绝对方式有效:

相对方式不会:

0 投票
1 回答
6473 浏览

python - 无法使用 importlib.import_module 导入模块

我想用来importlib.import_module动态导入模块。我的代码是这样的:

我可以在 Python 控制台中成功地做到这一点。但是如果我在文件中运行这些代码C:\Users\Administrator\Desktop>python test.py,它就不能工作:

但是如果我将 db.py 文件复制到与脚本文件相同的目录中,它就可以工作。我不知道为什么。

0 投票
2 回答
3968 浏览

python - 使用“当前目录”导入导入模块

我有以下代码来动态加载模块:

它工作得非常好,除了它试图在同一个文件夹中导入脚本(而不是同名包的一部分)的情况。例如,脚本a.py正在做import b. 它会导致错误ImportError: No module named 'b'(这在 Python 3 中很常见)。

但我真的很想找到解决这个问题的方法吗?这将通过预先解决:

编写“a”脚本。

虽然我希望它可以通过以下方式解决:

哦,是的,理由是我还想支持导入不是正确的包/模块的模块,而只是一些可以在解释器中工作的脚本。

可重现的代码

~/example/a.py

~/example/b.py

~/somewhere_else/main.py(与 a/b 不同)

然后在命令行上运行:

这导致ImportError: No module named 'b'

下面的代码解决了这个问题,但当然我们不能sys.path在所有脚本中手动放置东西。

~/example/a.py (2)

我真的希望其他人可能有一个我还没有想到的解决方案。

附录

0 投票
2 回答
5915 浏览

python - importlib 找不到模块

猫测试.py

ls项目/

蟒蛇测试.py

列出导入的模块 (sys.modules) 不显示任何模块项目

我可以使用 python shell导入bar 。

有任何想法吗?

0 投票
1 回答
4036 浏览

python - 在 Celery 任务中动态导入模块

是否可以在 Celery 任务中动态导入模块?

例如,我的hello.py工作目录中有一个名为的模块:

我可以使用以下方法动态导入它importlib

我想从 Celery 任务中执行与上述相同的操作:

任务运行时出现以下错误:

请注意print(os.listdir())(上面调试输出中的第 6 行)的输出,我们肯定在正确的目录中并且hello.py就在那里。

是否可以从 Celery 任务中动态导入模块?

0 投票
1 回答
15996 浏览

python - 使用 importlib.util 检查库时出错

我正在尝试使用 importlib 库来验证在 Python 3.5.2 中执行脚本的计算机上是否安装了 nmap 库

我正在尝试使用importlib.util.find_spec("nmap")但收到以下错误。

有人可以告诉我哪里出错了吗?

编辑

我能够使用以下代码使该功能正常工作。

0 投票
1 回答
203 浏览

python - 强制从源中卸载/解构动态导入的文件

一直是SO的长期浏览器,终于问了我自己的问题!

所以,我正在编写一个自动化脚本/模块,它递归地在目录中查找具有特定名称的 python 模块。如果我找到一个具有该名称的模块,我会动态加载它,从中提取我需要的内容,然后卸载它。我注意到虽然简单地删除模块并不会删除对该模块的所有引用,但在某个地方还有另一个挥之不去的地方,我不知道它在哪里。我尝试查看源代码,但无法很好地理解它。这是我所看到的示例,大大简化了:

我正在使用 Python 3.5.2(Anaconda v4.2.0)。我正在使用 importlib,这就是我想要坚持的。我也希望能够使用 vanilla python-3 来做到这一点。

我从这里的 python 文档中获得了源代码的导入(是的,我知道这是 Python 3.6 文档)。

我的主要司机...

我的示例模块...

输出:

我期待看到“SO LONG A!” 在“THE END”之前打印。那么,对我的模块的其他隐藏引用在哪里?我知道我的 del 是无偿的,因为我将它包装在一个函数中。我只是希望删除和范围明确。如何让 a.py 完全卸载?我计划动态加载大量像 a.py 这样的模块,并且我不想再坚持使用它们了。有什么我想念的吗?

0 投票
0 回答
13 浏览

python - importlib 可以从任何目录(非包)导入模块吗?

我正在尝试使用importlib.

例如,给定一个文件“a/b/some_file.py”,并且__init__.py这些目录中也没有文件(我也不能添加它们),导入它的最佳方法是什么?

我尝试的似乎不正确:(从“a”'a 父目录午餐提示并将其添加到路径后)

我也尝试了相对导入,但结果是一样的。

0 投票
0 回答
24 浏览

unit-testing - 测试不同的调用模式

我想测试cookiecutter生成的项目在多种调用模式下的行为。

鉴于以下生成的项目

内容__init__.py

内容__main__.py

(我已经阅读过关于 的问题__main__.__spec__,这不是这个问题的内容。事实上,我想试驾-TDD-我的这些问题的解决方法)

现在我编写测试,其中生成的项目结构和位置是已知的(例如,可通过 pytest 固定装置获得)

sys.argv奖励:为?注入值