在运行时使用python3

时间:2019-06-19 07:45:04

标签: 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 个答案:

答案 0 :(得分:0)

这对我来说很完美

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