def _verify_dependencies(self):
# These will always be initialized.
logging.up('Verifying dependencies')
installed_packages_list = sorted([i.key for i in pip.get_installed_distributions()])
for plugin_id, plugin_info in self.available_plugins.items():
if not plugin_info['_is_core']:
if 'dependencies' not in plugin_info:
continue
if 'os' in plugin_info['dependencies']:
if get_general_os() in plugin_info['dependencies']['os']:
plugin_info['dependencies'] = data_merge(plugin_info['dependencies'], plugin_info['dependencies']['os'][get_general_os()])
if 'plugin' in plugin_info['dependencies']:
for depend_name in plugin_info['dependencies']['plugin']:
installed = 'prism_' + depend_name in self.available_plugins
if not installed:
plugin_info['_is_satisfied'] = False
plugin_info['_dependencies'].append(('plugin', depend_name, installed))
if 'binary' in plugin_info['dependencies']:
for depend_name in plugin_info['dependencies']['binary']:
installed = is_package_installed(depend_name)
if not installed:
plugin_info['_is_satisfied'] = False
plugin_info['_dependencies'].append(('binary', depend_name, installed))
if 'module' in plugin_info['dependencies']:
for depend_name in plugin_info['dependencies']['module']:
installed = (depend_name in installed_packages_list)
if not installed:
plugin_info['_is_satisfied'] = False
plugin_info['_dependencies'].append(('module', depend_name, installed))
if not plugin_info['_is_satisfied']:
# Create a dummy plugin container
self._insert_dummy_plugin(plugin_info)
logging.error('Dependency unsatisfied. Offender: %s' % plugin_id)
logging.down()
评论列表
文章目录