我正在尝试围绕两个类似的库编写一个包装器,它会为我们提供一个通用的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'类似,但我相信这不一样。
答案 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