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 ImportError: 没有名为 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