导入Python库并优化处理,如果它们不可用 [英] Importing Python libraries and gracefully handling if they are not availalble
问题描述
如果我只有一个try catch块,我会得到1个异常(第一个)。有没有一种模式来迭代所有的libs,并且每个单独缺少的lib都有一个单独的异常?
#!/ usr / bin / env python
try:import sys
除了:print sys.exc_info()
try:import numpy as np
except:print sys.exc_info )
尝试:导入scipy作为sp
除了:print sys.exc_info()
try:import os as os
除了:print sys.exc_info()
try :从运算符import itemgetter
除了:print sys.exc_info()
try:import socket
除了:print sys.exc_info()
try:import logging
except :print sys.exc_info()
try:from time import gmtime,strftime
except:print sys.exc_info()
您可以使用 __ import __
动态导入模块,允许您 - 除其他外 - 通过以名称迭代列表导入模块。
例如:
libnames = ['numpy','scipy' 'operator']
在libnames中的libname:
try:
lib = __import __(libname)
除了:
打印sys.exc_info()
其他:
globals()[libname] = lib
您可以扩展它来处理导入...作为...
和从...导入...
表单或只是稍后进行分配手动,即:
np = numpy
sp = scipy
itemgetter = operator.itemgetter
I would like to import bunch of libraries and catch the exception.
If I have only 1 try catch block I get 1 exception (the first one). Is there a pattern to iterate over all of the libs and have a separate exception for each individual missing lib?
#!/usr/bin/env python
try: import sys
except: print sys.exc_info()
try: import numpy as np
except: print sys.exc_info()
try: import scipy as sp
except: print sys.exc_info()
try: import os as os
except: print sys.exc_info()
try: from operator import itemgetter
except: print sys.exc_info()
try: import socket
except: print sys.exc_info()
try: import logging
except: print sys.exc_info()
try: from time import gmtime, strftime
except: print sys.exc_info()
You can use __import__
to dynamically import modules, allowing you to - among other things - import modules by iterating a list with their names.
For example:
libnames = ['numpy', 'scipy', 'operator']
for libname in libnames:
try:
lib = __import__(libname)
except:
print sys.exc_info()
else:
globals()[libname] = lib
You can either extend that to handle the import ... as ...
and from ... import ...
forms or just do the assignments later manually, ie.:
np = numpy
sp = scipy
itemgetter = operator.itemgetter
这篇关于导入Python库并优化处理,如果它们不可用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!