相关疑难解决方法(0)

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

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

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

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

python python-import

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

Python 2.6中的动态类加载:RuntimeWarning:处理绝对导入时找不到父模块"插件"

我正在开发一个插件系统,插件模块加载如下:

def load_plugins():
   plugins=glob.glob("plugins/*.py")
   instances=[]
   for p in plugins:
      try:
         name=p.split("/")[-1]
         name=name.split(".py")[0]
         log.debug("Possible plugin: %s", name)
         f, file, desc=imp.find_module(name, ["plugins"])
         plugin=imp.load_module('plugins.'+name, f, file, desc)
         getattr(plugin, "__init__")(log)
         instances=instances+plugin.get_instances()
      except Exception as e:
         log.info("Failed to load plugin: "+str(p))
         log.info("Error: %s " % (e))
         log.info(traceback.format_exc(e))
   return instances
Run Code Online (Sandbox Code Playgroud)

代码有效,但是对于插件代码中的每个import语句,我都会收到如下警告:

plugins/plugin.py:2: RuntimeWarning: Parent module 'plugins' not found while handling absolute import
  import os
Run Code Online (Sandbox Code Playgroud)

没有报告主程序代码的错误,插件工作.

有人可以解释警告意味着什么,我做错了什么.我是否需要单独创建一个空的插件模块并导入它以保持python的快乐?

python import plugins dynamic-class-loaders

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