python - 在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: name 'GlobalModuleName' is not defined ”的运行时错误。
如何在不产生错误的情况下使此配置正常工作?我确信将使用模块的动态定义的代码是正确的。提前感谢您的指点。
解决方案
这对我来说非常有用
module1.py 导入操作系统导入系统
def func1():
print("Executed func1 of module1")
主文件
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
推荐阅读
- java - 如何创建一个方法来比较不同实例对象的属性值与java
- docker - docker compose 之后的 docker commit
- amazon-web-services - 如何从 CI/CD 管道向 AWS EKS 集群验证 kubectl
- swift - 来自 .accentColor swiftui 的 getHue 始终返回蓝色 hsb 值
- botframework - 具有输入验证的自适应卡片
- java - 在 Android Studio 中,文本不会出现在图像顶部
- python - 将 setuptools_scm 从 6.0.1 升级到 6.3.1 后检查清单失败
- python-3.x - 如何从也具有 NaN 的 CSV 文件中导入列表类型?
- javascript - 如何在单击角度 11 中来自 ngfor 循环的图像时切换特定 div
- autodesk-forge - 使用新的 AggregatedView 时出现问题,我需要此类的使用示例