我四处搜寻,但未找到解决此特定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'”的运行时错误。
如何使此配置正常工作而不产生错误?我确定将使用模块的动态定义的代码是正确的。感谢您提前提供的指导。
答案 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
之后