如何获取项目中所使用的包版本

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 及更高版本中获取所有已加载的包

如何以编程方式获取解决方案中使用的 NuGet 包的版本?

Android 在Android手机上获取其他应用的包名及版本号

如何在 Julia 中找到我的包版本?

npm package.js Guide