Python3在运行时从动态路径导入固定模块

2024-10-04 11:22:44 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

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

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

GlobalModuleName.moduleFunc()

我得到运行时错误“NameError:name'GlobalModuleName'未定义

如何使此配置在不产生错误的情况下工作?我确信使用模块动态定义的代码是正确的。提前谢谢你的指点


Tags: 模块path方法代码命令行用户import路径
1条回答
网友
1楼 · 发布于 2024-10-04 11:22:44

这对我很有效

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

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

main.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之后

相关问题 更多 >