首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警告:“除了ImportError”的try块中的“X”也应该在“除”块中定义

警告:“除了ImportError”的try块中的“X”也应该在“除”块中定义
EN

Stack Overflow用户
提问于 2017-02-25 08:42:43
回答 2查看 1.9K关注 0票数 1

我正试图为两个类似的库编写一个包装器,这将为两个库都提供一个通用API。示例:

代码语言:javascript
复制
# file XY.version.py
try:
    import X  # primary library
    __version__ = X.__version__
except ImportError:
    import Y  # fallback library
    __version__ = Y.__y_version__

PyCharm显示警告"'X' in try block with 'except ImportError' should also be defined in except block"。有什么简单的方法来重构代码以摆脱消息吗?当然,我可以在一开始或在except块中执行except,但这似乎是人为的,因为我只需要导入X才能获得版本。理想情况下,我不希望在命名空间中保留导入的跟踪。当然,理论上我可以在del X块的末尾执行try,但是这是我在任何地方都没有看到的,所以我假设人们不会使用它。它不会删除PyCharm中的警告消息。

注意:我知道这与Checking module name inside 'except ImportError'类似,但我相信这是不一样的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-31 18:16:56

如果是这样的话:

代码语言:javascript
复制
# file XY.version.py 
try:
  import X  # primary library
  __version__ = X.__version__ 
except ImportError:
  import Y as X # fallback library
  __version__ = X.__y_version__

然后在任何地方使用X。

票数 1
EN

Stack Overflow用户

发布于 2021-04-17 09:22:14

我看不到给出解决方案的任何答案,但请检查以下链接:https://pythonbasics.org/try-except/

给出一些例外和意义清单所需的线索。因此,如果您想摆脱烦人的消息,那么添加到异常中,如下所示:

代码语言:javascript
复制
try:
    import X  # primary library
    __version__ = X.__version__
except ImportError(X):
    import Y  # fallback library
    __version__ = Y.__y_version__

在一个类似的例子中对我起作用,而且似乎不会影响结果。我正在使用Pycharm 2021.1 CE

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42453848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档