【问题标题】:Which exception for a missing external dependency?缺少外部依赖项的哪个例外?
【发布时间】:2016-10-14 02:29:26
【问题描述】:

我已经阅读了 good reasons 的内容,不能让 pip 解决外部依赖项(例如 PyPI 不提供的依赖项)。

我的项目需要其中两个,所以它当然应该在启动时检查是否安装了这些依赖项。如果没有,我想提出一个例外,但是这种情况有什么标准吗?它看起来不像OSError,也不像IOErrorRuntimeError 看起来有点太笼统了。 EnvironmentError 会是正确的吗? (它出现在 python 3.3 中,但the python documentation 没有描述它)。

我已经看到一些项目定义了自己的 Missing[External]DependencyError,但是,除非有可能认为这是 最佳实践,否则我宁愿使用标准的,如果可能的话。

【问题讨论】:

    标签: python python-3.x exception dependency-management


    【解决方案1】:

    exceptions.ImportError

    编辑:抱歉,那是 Python2,在 Python3 中它只是 ImportError,如

    raise ImportError('msg')
    

    【讨论】:

    • 好的,但是导入并不总是与 python 库相关吗?这不应该是一个不同的例外吗?
    • 我不确定你在问什么。您显然无法从不存在的模块(在您的系统/virtualenv 上)导入异常。如果您尝试导入无法导入的模块,则会引发 ImportError。如果你想引发一个“更好”的错误让你的用户更好地理解,那么你应该抓住它并引发一个新的 ImportError 带有更有意义的消息,或者,如果你不想在屏幕上打印 StackTrace,打印 someting到标准错误。
    • import 语句始终用于导入 python 库(使用 python 或 pip 安装)。我所说的外部依赖项不是要导入的。所以我认为提出ImportError 令人困惑。
    • 您的意思是您的项目使用的程序(例如 OCR 软件)? (我会在那里使用 EnvironmentException ,但我不确定这是 best 选择将其发布为答案)。我认为您不是在谈论 you 没有制作的导入,而是您导入的模块制作,它仍然是 ImportError。有些模块你不能用 pip 安装,但可以用 apt-get 安装,然后可以正常导入。这就是我误解你的原因。你能举个例子来说明你的意思吗?
    • 我的项目使用了xmllint。这用于根据 xsd 模式验证 xml 文件。而euktoeps,来自eukleides包,用于将特定格式的文本文档编译成eps图片。
    猜你喜欢
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 2018-01-30
    • 2023-03-28
    • 1970-01-01
    • 2017-12-25
    • 2015-04-18
    • 2020-03-24
    相关资源
    最近更新 更多