[英]python load module get error after install
当脚本处于运行状态时,为什么在使用系统命令安装包后脚本找不到新模块:
目录结构是什么样的:
mymoduledir
|- target_module_dir
|- main.py
main.py 代码如下:
if __name__ == "__main__":
try:
import target_module
print("module already exist")
# to-do something
except ImportError:
print("has not target_module, start install")
os.system("cd target-module-dir && python setup.py install")
print("install finished")
import target_module
# to-do something
我发现:如果python环境没有目标模块,我的脚本会自动安装成功,但出现导入错误。 日志显示:
没有target_module,开始安装
运行安装.....
已完成 target_module 的处理依赖项
安装完成
回溯(最近一次调用最后一次):
文件“.\\main.py”,第 237 行,在
导入 target_module导入错误:没有名为 target_module_name 的模块
表示目标模块安装成功,但是我想导入的时候遇到了importerror。 为了证明我的结论,我打开 python shell 并尝试导入目标模块,它工作正常。 当我重新运行这个脚本时,日志显示:
模块已经存在
表示此脚本成功导入目标模块
我的想法是:脚本在启动之前会检查python环境,如果我想在脚本运行状态导入一个新模块,我需要让脚本知道环境已经更新。
我的尝试是:我搜索了很多相关的问题,但没有找到有效的解决方案。 For some reason, I must use python2.6 to complete my function
。我尝试使用reload功能,就像这样,但它无法工作。
我应该怎么做才能解决这个问题?
使用 pip install 效果很好,我的解决方案:
import pip
if __name__ == "__main__":
try:
import target_module
print("module already exist")
# to-do something
except ImportError:
print("has not target_module, start install")
pip.main(['install', './target_module_dir/'])
print("install finished")
import target_module
# to-do something
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.