繁体   English   中英

安装后python加载模块出现错误

[英]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.

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