警告:在try块中使用'except ImportError'时,'X'也应该在except块中定义。

4
我正在尝试编写一个包装器,将两个类似的库包装在一起,从而为它们提供共同的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'在try块中与'except ImportError'一起使用时,也应该在except块中定义"。有没有简单的方法重构代码以摆脱这个消息?当然,我可以在非常开始或except块中做X = None,但这感觉很人为,因为我只需要导入X以获取版本。理想情况下,我不想保留命名空间中导入的痕迹。当然,理论上我可以在try块结束时执行del X,但我从未在任何地方看到过这样做,所以我认为人们不使用它,而且顺便说一句,它不能删除PyCharm中的警告消息。

注意:我知道这类似于 在 'except ImportError' 中检查模块名称,但我认为这不是同一个问题。

2个回答

3
关于编程方面的内容,可以考虑以下这样的文字:

怎么样:

# 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。


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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接