如何获取项目中所使用的包版本
Posted 平定马小跳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取项目中所使用的包版本相关的知识,希望对你有一定的参考价值。
pip freeze > requirements.txt
创建虚拟环境,运行 pip install -r requirements.txt
如何在 Equinox 3.10 及更高版本中获取所有已加载的包
【中文标题】如何在 Equinox 3.10 及更高版本中获取所有已加载的包【英文标题】:How to get all the loaded bundles in Equinox 3.10 and onwards 【发布时间】:2015-06-13 00:48:13 【问题描述】:我想以编程方式检索所有已加载的捆绑包。在旧版本中,我们以这种方式使用它:
Field osgiField = EclipseStarter.class.getDeclaredField("osgi");
osgiField.setAccessible(true);
final org.eclipse.osgi.framework.internal.core.OSGi osgi =
(org.eclipse.osgi.framework.internal.core.OSGi) osgiField.get(null);
osgi.getBundleContext().getBundles();
如何在最新的osgi中检索所有加载的bundle?
【问题讨论】:
您是尝试从 OSGi 外部还是从包中执行此操作? 我正在尝试从另一个包中执行此操作 您真正需要的是获取 OSGi BundleContext,而之前您使用 非常 奇怪的 hack 来获取它。正确的方法是实现一个 Bundle Activator。 【参考方案1】:您可以从包中实现 BundleActivator 接口并将您的类在清单中标记为“BundleActivator:my.ClassName”。
或者,如果这不可能,您可以使用 FrameworkUtil.getBundle(this.getClass()).getBundleContext()。
另请参阅此问题:Best technique for getting the OSGi bundle context?
然后使用 bundleContext.getBundles();
这些方法应该适用于任何 OSGi 框架。
【讨论】:
以上是关于如何获取项目中所使用的包版本的主要内容,如果未能解决你的问题,请参考以下文章
如何在 android 2.3 及更高版本中获取当前启动器的包名?
如何在 Equinox 3.10 及更高版本中获取所有已加载的包