python - 导入 Python 库并在它们不可用时优雅地处理

标签 python exception-handling setup.py egg

我想导入一堆库并捕获异常。

如果我只有 1 个 try catch block ,我会得到 1 个异常(第一个)。是否有一种模式可以遍历所有库并为每个缺少的库设置一个单独的异常?

#!/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()

最佳答案

您可以使用 __import__动态导入模块,除其他外,允许您通过使用模块名称迭代列表来导入模块。

例如:

libnames = ['numpy', 'scipy', 'operator']
for libname in libnames:
    try:
        lib = __import__(libname)
    except:
        print sys.exc_info()
    else:
        globals()[libname] = lib

您可以扩展它以处理 import ... as ...from ... import ... 表单,或者稍后手动进行分配,即:

np = numpy
sp = scipy
itemgetter = operator.itemgetter

关于python - 导入 Python 库并在它们不可用时优雅地处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20226347/

相关文章:

java - catch是java中的一个方法吗?

记录 Camel 异常并发送到死信 channel

c# - 异常没有冒泡

python - 无法使用 setup.py 包含非 python 文件

python setup.py - 安装后如何显示消息

python - 如何检测 Python 中外部模块的崩溃?

python - 如何在Python中按降序对这个文本文件进行排序?

Python Popen 困难 : File not found

python - 这是nosetests 仅选择无可执行文件.py 的正常行为吗?

python - 从 Git 存储库安装 Python 包后,某些文件夹丢失