代码之家  ›  专栏  ›  技术社区  ›  Alvin

安装后python加载模块get错误

  •  -2
  • Alvin  · 技术社区  · 6 年前

    为什么脚本在运行状态下使用系统命令安装包后找不到新模块 :

    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环境没有目标模块,我的脚本将自动成功安装它,但我得到了导入错误。日志显示:

    尚未安装目标模块,请开始安装
    .....
    已完成处理目标模块的依赖项
    安装完成
    回溯(最近一次呼叫):
    文件”\main.py,第237行
    ImportError:没有名为target\u module\u name的模块

    这意味着目标模块已成功安装,但在导入时遇到了导入错误。 重新运行 此脚本,日志显示:

    这意味着此脚本成功导入目标模块

    我认为: 脚本在启动前会检查python环境,如果我想导入一个新模块中运行状态的脚本,我需要让脚本知道环境已经更新。

    我尝试的是: 我搜索了许多相关的问题,但没有找到有效的解决办法。 For some reason, I must use python2.6 to complete my function 。我试着使用重新加载功能,像这样,但它不能工作。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Alvin    6 年前

    使用pip安装会很好地工作,我的解决方案是:

    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