为什么脚本在运行状态下使用系统命令安装软件包后脚本找不到新模块:
目录结构如下:
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
。我尝试使用这样的重载功能,但无法正常工作。
我该怎么办才能解决这个问题?
答案 0 :(得分:0)
使用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