我四处搜寻,没有找到解决这个特定 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")
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
之后
关于python - 在python3中运行时从动态路径导入固定模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56662540/