我已经使用setuptools制作了一个python蛋,并希望在运行时访问它的元数据。我目前正在工作:
import pkg_resources
dist = pkg_resources.get_distribution("my_project")
print(dist.version)
但是如果我安装了同一鸡蛋的多个版本,这可能会无法正常工作。如果我同时安装了 egg 和开发版本,那么从开发版本运行此代码将获取已安装 egg 的版本。
那么,如何获取我的鸡蛋的元数据,而不是我的系统上安装的一些随机匹配的鸡蛋?
我对 Python 也有些陌生,但据我所知:
尽管您可以安装"相同"蛋的多个版本(具有相同的名称),但在运行时,只有其中一个版本可用于任何特定代码段(基于您的发现方法)。 因此,如果您的蛋是调用此代码的人,则必须已将其选为此代码的my_project
版本,并且您的访问权限将是您自己的版本。
没错。因此,您应该只能获取库当前可用的蛋(单数)的信息。如果您的站点包文件夹中有多个同一库的蛋,请检查同一文件夹中的 easy-install.pth 以查看真正使用了哪个蛋:-)
在站点注释上:这正是像zc.buildout这样的系统的重点,它允许您定义库的确切版本,例如在开发应用程序或提供Web应用程序时。因此,例如,您可以将 1.0 版用于一个项目,将 1.2 版用于另一个项目。