警告:除了块

时间:2017-02-25 08:42:43

标签: python pycharm

我正在尝试围绕两个类似的库编写一个包装器,它会为我们提供一个通用的API。例如:

# 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"。有没有简单的方法来重构代码以摆脱消息?当然,我可以在开始时或X = None块中except进行操作,但这感觉很人为,因为我只需要导入X才能获得版本。理想情况下,我不想在命名空间中保留导入的痕迹。当然理论上我可以在del X块的末尾做try但是这是我在任何地方都没有看到的东西所以我认为人们不会使用它而顺便说一下。它不会删除PyCharm中的警告消息。

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

2 个答案:

答案 0 :(得分:0)

如何做到这一点:

# 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 :(得分:0)

我看不到任何可以解决此问题的答案,但请查看此链接: https://pythonbasics.org/try-except/

通过异常和含义列表提供所需内容的线索。 因此,如果您只想摆脱烦人的消息,请像这样添加到异常中:

try:
    import X  # primary library
    __version__ = X.__version__
except ImportError(X):
    import Y  # fallback library
    __version__ = Y.__y_version__

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