2012-06-23 23 views
4

我有我用的distutils構建一個Python包,我用的是版本的說法在我的設置功能,像這樣(用除了名稱和版本等參數):如何訪問distutils版本號?

setup(name='example_module', version='0.1.2', ...) 

我能提取

import pkg_resources 
version = pkg_resources.require('example_module')[0].version 

如何從一個Python腳本,它是此分佈的外部訪問這個版本號:通過調用從example_module包內的模塊的版本號?

回答

1

擁有的版本最簡單的方法是在另一個Python程序可用包外的分佈是遵循PEP 396 http://www.python.org/dev/peps/pep-0396/

任何其他腳本可以通過運行

訪問Python包的版本
python setup.py --version 

並捕獲輸出。在生成包的聯機文檔時,我在Makefiles中使用它來提取版本號。

如果您的軟件包包含任何命令行工具,請確保您包含--version命令行選項。然後任何腳本/程序都可以在安裝後使用它來獲取你的軟件包版本。

+0

+1鏈接到PEP396!我沒有看到。不幸的是,運行'python setup.py --version'不是一個選項,因爲我試圖從我自己的程序中提取版本號,我寧願不運行一個單獨的進程來捕獲一個版本號 – James

+0

我不確定您對腳本的引用是我稱爲python程序還是其他某個shell腳本。編輯你的問題,使其更清楚。 – Anthon

+0

啊哈......是的,感謝編輯! – James

1

通常,版本號是包中源的常量,setup.py使用該值,然後任何導入包的人都可以讀取版本字符串。

+0

因此,訪問這個可能會這樣做:'example_module .__ version__'?或者你的意思是訪問常量的其他方式? – James