我们从Python开源项目中,提取了以下9个代码示例,用于说明如何使用pkgutil.extend_path()。
def test_nested(self): pkgutil_boilerplate = ( 'import pkgutil; ' '__path__ = pkgutil.extend_path(__path__, __name__)') self.create_module('a.pkg.__init__', pkgutil_boilerplate) self.create_module('b.pkg.__init__', pkgutil_boilerplate) self.create_module('a.pkg.subpkg.__init__', pkgutil_boilerplate) self.create_module('b.pkg.subpkg.__init__', pkgutil_boilerplate) self.create_module('a.pkg.subpkg.c', 'c = 1') self.create_module('b.pkg.subpkg.d', 'd = 2') sys.path.insert(0, os.path.join(self.basedir, 'a')) sys.path.insert(0, os.path.join(self.basedir, 'b')) import pkg self.addCleanup(unload, 'pkg') self.assertEqual(len(pkg.__path__), 2) import pkg.subpkg self.addCleanup(unload, 'pkg.subpkg') self.assertEqual(len(pkg.subpkg.__path__), 2) from pkg.subpkg.c import c from pkg.subpkg.d import d self.assertEqual(c, 1) self.assertEqual(d, 2)
def patchAndroid(): if os.path.exists('/storage/external_storage/') or os.path.exists('/storage/emulated/'): #patch for Android only zopePath=xbmc.translatePath('special://home/addons/script.module.zope.interface/lib/zope/') myLog('patchAndroid > found common Android paths, patching %s' % zopePath) if not os.path.exists(zopePath + "__init__.py.org") and os.path.exists(zopePath + "__init__.py"): os.rename(zopePath + "__init__.py", zopePath + "__init__.py.org") with open(zopePath + "__init__.py", 'w') as f: f.write("""# this is a namespace package patched by j00zek try: from pkg_resources import declare_namespace declare_namespace(__name__) except ImportError: import pkgutil __path__ = pkgutil.extend_path(__path__, __name__) """) f.close() if os.path.exists(zopePath + "__init__.pyo"): os.remove(zopePath + "__init__.pyo") else: myLog('patchAndroid > common Android paths not found, is it Android?')
def create_init(self, pkgname): dirname = tempfile.mkdtemp() sys.path.insert(0, dirname) pkgdir = os.path.join(dirname, pkgname) os.mkdir(pkgdir) with open(os.path.join(pkgdir, '__init__.py'), 'w') as fl: fl.write('from pkgutil import extend_path\n__path__ = extend_path(__path__, __name__)\n') return dirname
def component_loader(__path__, __name__): """ Loads classes from subdirectories of a given module. """ __path__ = pkgutil.extend_path(__path__, __name__) for importer, module_name, ispkg in pkgutil.walk_packages(path=__path__, prefix=__name__+'.'): importlib.import_module(module_name)
def ExtendPath(self): self.path = pkgutil.extend_path(self.path, self.name) if self.parent is not None: self.parent.ExtendPath()