问题标签 [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 投票
2 回答
228 浏览

python - 导入 Python 模块(从另一个路径)并用作默认值

我想导入位于另一条路径的请求模块。我想使用下面的代码。我还可以看到安装模块的请求目录有一堆其他文件。这需要什么。

以下是 /Requests 目录的一些内容。

……

下面的问题有一些很好的答案,但仍然让我感到困惑。

如何在给定完整路径的情况下导入模块?

0 投票
2 回答
1375 浏览

python - 从 *folder_name* 导入 *variable* Python 3.4.2

文件设置:

我正在尝试根据用户输入从文件夹 Script 中导入 Project.py 模块。

Python版本:3.4.2

理想情况下,脚本看起来像

但是,python 在使用 import 时不会将 q 识别为变量。

我试过使用importlib,但是我不知道如何从上面提到的Script文件夹中导入。

我不确定我会在哪里实现文件路径。

0 投票
2 回答
766 浏览

python - python importlib 在守护进程上下文中找不到模块

我有一个基于配置动态导入模块的脚本。我正在尝试python-daemon在脚本上实现一个守护进程上下文(使用模块),它似乎干扰了 python 找到有问题的模块的能力。

我这样mymodule/__init__.pysetup()

我接到了setup()里面的电话mymodule/__main__.py,我正在以这种方式加载整个内容: PYTHONPATH=. python -m mymodule

这工作正常,但是在 load_modules() 中设置的侦听端口被新添加的守护进程上下文关闭,所以我想在守护进程上下文中移动该函数调用,如下所示:

模块以这种方式加载load_modules()

load_modules()守护程序上下文之外,这可以正常工作。当我将它移动到守护进程上下文中时,它似乎无法找到它正在寻找的模块。我明白了:

它看起来像是某种命名空间问题——我注意到异常只涉及我尝试导入的模块名称的子模块部分——但我已经比较了我在守护进程上下文内部和外部能想到的所有内容,并且我找不到重要的区别。 sys.path没有改变,守护进程上下文没有清除环境或 chrooting。cwd 当然会更改为/,但这不应该对 python 查找模块的能力产生任何影响,因为绝对路径.出现在sys.path.

我在这里想念什么?

编辑:我正在添加一个SSCCE以使情况更加清晰。以下三个文件创建了一个名为“mymodule”的模块,可以从命令行以PYTHONPATH=. python -m mymodule. 有两个调用load_module()in __init__.py,一个被注释掉。您可以通过交换评论中的哪一个来证明问题。

mymodule/__main__.py

mymodule/__init__.py

mymodule/foo.py

0 投票
2 回答
166 浏览

python - 给定 Python 源文件的路径,我如何找到该文件属于哪个包?

给定文件的路径,我需要传递包名称,importlib.import_module()以便相对导入能够正常工作。我无法导入它然后检查module.__package__,因为它不会成功导入。

0 投票
1 回答
497 浏览

python - 如何在烧瓶控制器中正确使用 importlib?

我正在尝试根据某些设置加载模块。我找到了一个可行的解决方案,但我需要高级 python 开发人员确认该解决方案是最佳性能,因为将使用它的 API 端点将承受重负载。

这个想法是根据用户和其他系统配置的参数来改变端点的工作。我正在根据这些设置加载正确的处理程序类。目标是能够轻松创建新的处理程序,而无需修改调用处理程序的代码。

这是一个工作示例:

./run.py :

一个“简单”的处理程序示例。处理程序是需要定义处理程序类的模块:

./handlers/simple.py :

如果我理解正确,则对端点的每个查询都会进行导入。这意味着文件系统中的 IO 可以查找模块,...

这是实施此策略的正确/“pythonic”方式吗?

0 投票
1 回答
211 浏览

python - 使用 importlib.import_module 替换 from m import v

有谁知道相当于

如果我想使用 import_module

importlib.import_module

0 投票
1 回答
164 浏览

python - 在 from x import * 等情况下使用 importlib

如何importlib用于动态重新加载之前导入的模块:

该文档提供了普通导入的示例,例如:

作为

版本:Python 3.4

0 投票
1 回答
519 浏览

python - Google AppEngine 动态加载,ImportError: No module named pip._vendor.requests.status_codes

当我尝试使用 __import__ 实现某种动态类加载时出现以下错误...:

...或 importlib.import_module :

我当然导入 importlib。

我在 Google AppEngine 服务器上部署我的程序来测试它(我有一个生产 URL 和一个开发 URL)。

这是代码:

和参数内容:

我在谷歌上找不到类似的错误,

我现在想知道我是否没有浪费时间试图用这个复杂的解决方案超越自己......

可能我应该使用一个简单的字典将名称与 python 类相关联吗?

0 投票
1 回答
4209 浏览

python - 用于 imp.new_module() 的 Python importlib 类似物

PyCharm 告诉我 imp 已被弃用,所以我想知道 importlib 是否有 imp.new_module 的类似物。

0 投票
0 回答
1010 浏览

python - Importlib import_module 从另一个包

我有一个如下所示的目录结构:

subclass.py我有一个类Subclass,它继承自Superclass. 在Subclass.__init__中,我调用self.register("subclass", ["a", "b"]),其定义Superclass为:

subclass.py还包含:

当我跑步时python subclass/subclass.py,一切都按我的预期进行;模块ab被导入,并且register每个模块中的所有功能都正确运行。

test_subclass中,我有from subclass.subclass import Subclass,并且我调用了Subclass构造函数。但是,当我运行时py.test,我得到了错误ImportError: No module named b。模块导入正常,ab模块失败。

我尝试颠倒导入的顺序 ( self.register("subclass", ["b", "a"]),但它仍然在b.

Module比 modulea更多的import 语句b(我还有其他文件没有在目录图中显示),当我将所有a的导入添加到b.

这是动态导入模块的正确方法吗?如果是这样,我错过了什么吗?如果不是,我是否将错误的论点传递给import_module

注意,我使用的是 python 2.7。