2008-10-07 69 views
5

我已經使用setuptools生成了一個python蛋,並希望在運行時訪問它的元數據。我目前正在這樣做:訪問python蛋自己的元數據

import pkg_resources 
dist = pkg_resources.get_distribution("my_project") 
print(dist.version) 

但這可能會工作不正確,如果我有多個版本的相同的雞蛋安裝。如果我已經安裝了egg和development版本,那麼從開發版本運行這個代碼會得到已安裝egg的版本。

那麼,我該如何獲取元數據我的蛋不是我的系統上安裝的一些隨機匹配蛋?

回答

4

我有點新的Python的爲好,但是從我的理解:

雖然您可以安裝「相同的」雞蛋的多個版本(具有相同名稱),只是其中之一將提供給運行時的任何特定代碼片段(基於您的發現方法)。因此,如果您的雞蛋是調用此代碼的雞蛋,那麼對於此代碼,它必須已被選爲my_project版本,並且您的訪問權限將針對您自己的版本。

0

沒錯。所以你應該只能得到當前可用雞蛋(單數)圖書館的信息。如果您的site-packages文件夾中有同一個庫的多個雞蛋,請檢查easy-install.pth在同一文件夾中以查看哪個雞蛋真的被使用:-)

在網站上注意:這正是像zc.buildout這樣的系統點,它允許您定義一個庫的確切版本,例如在開發應用程序或提供Web應用程序時,這些庫將提供給您。所以你可以例如使用1.0版本的一個項目和1.2的另一個。