python - 在python3中运行时从动态路径导入固定模块

标签 python dynamic import

我四处搜寻,没有找到解决这个特定 Python3 问题的方法。也许这是我正在使用的关键字,或者它可能只是一个特殊的用例。如果我的问题是后者,这是我的问题:

我正在开发一个 python (3) 脚本,它需要使用已在用户主目录中本地编译的 python 模块。我没有像配置脚本那样奇特的东西来为用户配置此路径作为自动化过程。我想在运行时将 python 模块的路径作为命令行参数传递给脚本,然后动态加载该模块。例如,我会调用:

$ myscript.py --modpath /home/user/path/to/ModuleSource

然后在我的代码中,当我解析命令行参数时,调用如下所示的内容:

import sys
sys.path.append(localModulePath)
import GlobalModuleName

问题是,在使用模块方法的脚本的静态代码中,直到运行时将模块的定义传递给我的脚本时,才能解析实际的模块。 也就是说,如果我有如下的 python 代码

GlobalModuleName.moduleFunc()

我收到“NameError:名称'GlobalModuleName'未定义”的运行时错误。

如何让此配置正常工作而不产生错误?我确信将使用模块动态定义的代码是正确的。提前感谢您的指点。

最佳答案

这对我来说非常有效

模块1.py 导入操作系统 导入系统

def func1():
    print("Executed func1 of module1")

ma​​in.py

import sys

pathPassed=sys.argv[1]
sys.path.append(pathPassed)
import module1
module1.func1()

执行

 python main.py ThePathformodule1.py

Executed func1 of module1

唯一需要注意的是import语句应该在sys.path.append之后

关于python - 在python3中运行时从动态路径导入固定模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56662540/

相关文章:

python - 如何为 argparse 参数提供类型提示?

android - 我可以以编程方式选择 Android 布局文件夹吗?

javascript - 动态改变 HTML 标签

java - JTree 单击事件不起作用

css - ionic 3 : the best way to import css from node_modules

python:导入的模块处于不同的上下文中

python - 如何实现神经网络剪枝?

python - 如何在python中获取返回状态

python - 将 [{str :int}, {str :int}, ... ] 的字典列表转换为 {str:int} 的单个字典

MySQL在线导入导出