繁体   English   中英

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

[英]Importing a fixed module from a dynamic path at runtime in python3

我四处搜寻,但未找到解决此特定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'未定义 ”的运行时错误。

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

这对我来说很完美

module1.py import os导入系统

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM