【发布时间】:2018-05-23 00:33:02
【问题描述】:
我正在编写 python 代码来在 linux 环境中安装我的程序所需的所有库包。所以 linux 可能包含 python 2.7 或 2.6 或两者,所以我开发了一个 try and except 块代码,它将安装 pip 包linux。 Try 块代码由 python 2.7 版本 pip install 组成,Catch 块包含 python 2.6 版本 pip install。我的问题是代码的和平工作正常,当我尝试在 python 2.6 中安装熊猫时,它给了我一些错误。我想抓住那个异常。你能告诉我如何改进我的 try except 块以捕获该异常
required_libraries = ['pytz','requests','pandas']
try:
from subprocess import check_output
pip27_path = subprocess.check_output(['sudo','find','/','-name','pip2.7'])
lib_installs = [subprocess.call((['sudo',pip27_path.replace('\n',''),'install', i])) for i in required_libraries]
except:
p = subprocess.Popen(['sudo','find','/','-name','pip2.6'], stdout=subprocess.PIPE);pip26_path, err = p.communicate()
lib_installs = [subprocess.call((['sudo',pip26_path.replace('\n',''),'install', i])) for i in required_libraries]
【问题讨论】:
-
再试一次:except: 阻塞在你已经拥有的 except 内?
-
@ChrisCharles 刚才我尝试了同一个。仍然没有捕捉到异常
-
@ChrisCharles 除外:尝试:p = subprocess.Popen(['sudo','find','/','-name','pip2.6'], stdout=subprocess.PIPE );pip26_path, err = p.communicate() lib_installs = [subprocess.call((['sudo',pip26_path.replace('\n',''),'install', i])) for i in required_libraries]除了 Exception as e: logging.info("error in pip_installs function '%s'" %e)
-
捕获所有异常通常是一个糟糕的主意。见stackoverflow.com/questions/10594113/…
标签: python python-3.x python-2.7 exception subprocess