问题标签 [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.
python - 在 Python 中从导入中动态更改引用
简短:
如果已经导入了同名的不同模块,我如何导入模块?我不再需要旧模块,但我无法以不同的名称导入新模块。
importlib.reload()
没有达到预期的效果,显然你真的不应该搞砸sys.modules
上下文:
我正在通过编写脚本 (A) 来自动化测试工作流程。提供了测试脚本,不能更改。
测试的目标是脚本(B)中的一个类,其子文件夹中有不同的版本。不幸的是,脚本 B 和类总是具有相同的名称,对此我无能为力。
测试脚本导入对象并在其上运行测试。
script_a 遍历版本文件夹并在 script_b 上运行测试脚本。在每次迭代中,都会将一个子文件夹添加到导入路径中,因此测试脚本将找到相应的 script_b。路径在迭代后被移除。
如果sys.modules
已经包含一个版本的 test_script,
问题:
似乎reload
对 test_script 导入的 script_b 没有影响。因此,尽管我将导入路径更改为不同的子文件夹 test_script 始终在版本 1 上运行。如何让 test_script 使用不同版本的 script_b 而不改变 test_script 本身?
跟进:虽然回答了最初的问题,但我想知道,从设计的角度来看,这个解决方案如何?有没有更好/更优雅的方法来自动化这个测试过程?
根据我的发现,重新加载模块并不是一种好的做法。
python - 从另一个文件(importlib)导入变量?
我正在尝试从另一个 python 文件中导入变量。
a.py
- 待进口
b.py
- 有效,但我不能有静态名称a
c.py
- 不行
输出是:
但text
变量不起作用。
d.py
- 不行
可以importlib
用作from MODULE import *
吗?
python-3.x - Python3:import 和 importlib.import_module 之间的不同行为?
我无法动态导入在代码中导入没有问题的模块,我不知道为什么。
我有以下内容:
初始化文件为空。以下作品:
以下不起作用:
我确实阅读了 importlib 文档以及关于 SO 的几个答案,例如,如何使用 importlib.import_module 在 Python 中导入模块和从字符串中动态导入文件中的方法
但我错过了什么?
python - python3中的importlib.util是什么?
我正在尝试pip install importlib
使用 python 3.6,但我收到导入错误消息:'NO Module named "importlib.util"'。当我尝试这样做时也会出现这种情况pip install imagescanner
,这是我的真正意图。构建一个连接到图像扫描仪设备的应用程序,但这是另一个问题......感谢您的帮助!
python - 删除了交互式模块的功能。如何重新导入?importlib.reload 没有帮助
我在 ipython 上删除了一个(内置包)函数:
好的。但是如何重新加载该功能?这没有帮助:
python - python:导入功能在 3.5 中不起作用
我用它来导入 2.7 中的一个函数,该函数有效:
但我很难在 3.5 中完成这项工作。请问有什么想法吗?
python - 模块的python动态导入是否会生成.pyc?
我想要可以评估的点名字符串。这些虚线名称可能指向项目不知道的新文件中的功能(以便在不属于开发团队的情况下快速将新功能添加到项目中)。
现在,我使用库(金字塔)解析和编译虚线名称,然后将编译后的函数对象保存在某个地方以便以后使用。
我已经看到importlib
让我们导入一个模块,它工作得非常好,就像这样:
尽管如此,通常当您导入模块时,.pyc
会生成 a ,因此其他调用不会花费太多时间来执行(因为它们不必再次编译)。
是否使用importlib
创建.pyc
文件导入?
如果没有,添加它会locals()
改变什么吗?(添加它globals()
似乎对我不起作用)像这样:
python - import the development version of a module over the version that is installed in site-packages
I'm developing a python module that is currently closed-source and cannot go on pip (not my choice) for this example I'll refer to it as private_module
. This module relies on another module that I'm also developing that is available on pip I'll refer to it as public_module
. Here is the problem private_module
and the development version of public_module
are in a directory on a windows server that I shared with co-workers. The computers that need to access the code have variable file permissions for their variable flavors of python meaning, it is very difficult to pip install ANYTHING but at the same time there may be lingering versions of both private_module
and public_module
in their site-packages directory. Also assume that all users have no programming experience and even if they did the computers would not be able to install packages with pip without admin privileges.
The directory structure can be represented like so:
C:\Program Files\Anaconda3\lib\site-packages\[outdated public and private modules]
F:\PythonModules\exp\[new public and private modules]
I've tried the following and it works perfectly if the modules have not been installed into pip but the modules that are installed in pip appear to be loaded in favor over the other which makes sense.
Is there a way that I can load the new public and private modules over their counterparts that may be in site-packages?
python-3.x - 从不同的目录导入文件
我正在开发一个项目,我的 python 文件(位于 D:)将打开“提交”文件夹(in C:\user\desktop\
)。现在,submissions 文件夹有学生的子文件夹,如 student1、student2 等。现在,每个学生提交相同的文件 say my_math.py
(具有 add、sub、mul、. 功能)。
所以,我的程序 ( test_math.py
) 一个接一个地测试他们的每一个提交。
这似乎不起作用。我也有一个__init__.py
提交文件夹。我不知道问题出在哪里!我正在使用python 3.6.3
python - Python:如何使用 Importlib 创建类对象
我知道类似的问题已经被问过/回答了好几次。但请继续阅读..
我正在尝试从Python 3.6中的“将字符串转换为 Python 类对象”中所述的字符串值创建一个类。
实用程序.py
欢迎.py
错误
那么我做错了什么?
另外,如何创建“FooParam”对象并将值传递给构造函数。