相关疑难解决方法(0)

如何检查python模块是否存在而不导入它

我需要知道是否存在python模块,而不导入它.

导入可能不存在的东西(不是我想要的东西):

try:
    import eggs
except ImportError:
    pass
Run Code Online (Sandbox Code Playgroud)

python python-import

152
推荐指数
8
解决办法
14万
查看次数

如何在运行时跳过整个Python unittest模块?

我想我的Python unittest模块告诉测试运行器在某些情况下跳过它的全部(例如无法导入模块或找到关键资源).

我可以使用@unittest.skipIf(...)跳过unittest.TestCase类,但是如何跳过整个模块?将跳过应用于每个类是不够的,因为如果模块无法导入,类定义本身可能会导致异常.

python unit-testing

23
推荐指数
4
解决办法
2万
查看次数

检查'除了ImportError'内的模块名称

try:
   import MySQLdb
   # some action
except ImportError as err:
   # fallback code
Run Code Online (Sandbox Code Playgroud)

PyCharm给出了代码检查警告:

"除了ImportError"的try块中的'MySQLdb'也应该在除块之外定义

此检查检测应解决但不能解析的名称.由于动态调度和鸭子打字,这在有限但有用的情况下是可能的.顶级和类级别项比实例项更受支持.

好吧,我认为警告是合理的,因为fallback code假设没有安装'MySQLdb',而它可能是一些不同的错误,只是引发了ImportError.所以我使用了类似的东西:

try:
   import MySQLdb
   # some action
except ImportError as err:
   if "MySQLdb" in repr(err):
       # fallback code
   else:
       raise
Run Code Online (Sandbox Code Playgroud)

PyCharm警报仍然存在,但它可能只是一个PyCharm问题(谷歌显示此类检查的问题)

问题:

  1. 当你"除了ImportError"之外,真的值得检查名字吗?即使在简单的情况下(没有some action之后import MySQLdb)?

  2. 如果值得检查,上面的例子是正确的方法吗?如果不是 - 什么是正确的方法?

PS MySQLdb只是系统中可能缺少的模块的一个示例.

python exception-handling importerror pycharm

17
推荐指数
1
解决办法
5221
查看次数