當我使用pip從源代碼安裝軟件包時,它會生成軟件包的版本號,我可以使用'pip show'來查看。但我找不到如何生成該版本號,並且無法從源代碼中找到版本字符串。有人能告訴我該版本是如何生成的嗎?pip如何確定python軟件包版本
1
A
回答
2
是pip
使用的版本號來自setup.py
(如果你pip install
文件,目錄,回購等)和/或指數的PyPI的信息(如果你pip install
包名)。 (因爲這兩者必須完全相同,所以它們並不重要)
建議軟件包在運行時在其頂級模塊/軟件包上使用相同的字符串作爲__version__
屬性,在他們的設置中,但這不是必需的,並不是每個軟件包都會這樣做。
如果軟件包沒有公開它的版本,那麼你真的沒辦法得到它。 (好吧,除非你想的grub通過pip
數據,試圖找出哪些軟件包擁有一個模塊,然後得到其版本)
下面是一個例子:
在源代碼bs4
( BeautifulSoup4),該setup.py
文件中有這樣一行:
version = "4.3.2",
就是這樣被使用時,直接或間接地,通過pip
版本。
然後,裏面bs4/__init__.py
,有這樣一行:
__version__ = "4.3.2"
這意味着,倫納德·理查森是一個好人誰如下的建議,這樣我就可以import bs4; print(bs4.__version__)
並得到相同的版本字符串pip show beautifulsoup4
給我。
但是,正如您所看到的,它們是完全不同文件中的兩個完全不同的字符串。如果他不好,他們可能完全不同,或者第二個可能會失蹤,或者命名不同。
的OpenStack的人想出了一個名爲PBR一個漂亮的圖書館,可以幫助您管理的版本號。您可以閱讀鏈接的文檔頁面以獲取完整的詳細信息,但基本思路是它可以從git中爲您生成整個版本號,或者驗證您指定的版本號(在setup.cfg
的metadata
部分中)並附加dev
構建數字出git。 (這依賴於您在git
回購庫中使用Semantic Versioning。)
相關問題
- 1. 如何使用pip安裝特定版本的軟件包?
- 2. PIP安裝:如何強制特定的軟件包的版本
- 3. Openshift pip卸載舊軟件包版本
- 4. 確定特定軟件包的版本
- 5. pip顯示軟件包的不正確版本
- 6. Pip == 6.0.6找不到以前的軟件包版本,但Pip == 1.5.6確實
- 7. python pip:現有軟件包中找不到任何發行版
- 8. 如何pip安裝本地python軟件包?
- 9. pip和OS的軟件包版本有何區別?
- 10. python使用pip軟件包不同於默認的軟件包
- 11. Python pip - 爲軟件包安裝文檔?
- 12. Python PIP:軟件包目錄不存在
- 13. Pip只安裝純python軟件包
- 14. Python Pip卸載多個軟件包
- 15. python軟件包:如何依賴最新版本的單獨軟件包
- 16. 用正確的python版本安裝pip
- 17. 找到與pip一起安裝的軟件包版本
- 18. 安裝前檢查可用的pip軟件包版本
- 19. 如何用pip安裝nltk_data軟件包?
- 20. 如何用pip安裝軟件包?
- 21. 如果未提供軟件包版本,pip如何檢測歸檔URL?
- 22. 如何使用sudo安裝pip軟件包後只能在本地使用pip軟件包?
- 23. 如何在mac osx上安裝python的pip軟件包?
- 24. pip不會在本地安裝Python軟件包--user
- 25. Pinning R軟件包版本
- 26. Node.js - NPM軟件包版本
- 27. 預測軟件包版本
- 28. Haskell軟件包版本
- 29. 確定使用pip安裝的python軟件包的依賴關係
- 30. 確定所有軟件包相關性的最小R版本
謝謝您的回答。我很好奇版本字符串的其餘部分來自哪裏。例如,openstack cinder在setup.cfg中有version = 2014.2(https://github.com/openstack/cinder/blob/master/setup.cfg)。在pip安裝-e〜/ cinder之後,其在pip中的版本顯示爲2014.2.0.0b4.dev83。我想知道'.0.0b4.dev83'是怎麼來的。 – tvbinstinct
@tvbinstinct我相信所有的OpenStack項目都使用[PBR](https://pypi.python.org/pypi/pbr/)來管理版本號,並且它會嘗試從DVCS回購中提取版本信息版本和標籤附加到指定的版本號,但我不太確定;我從來沒有閱讀過文檔,也沒有用它來看看它在做什麼。 – abarnert
@tvbinstinct:啊哈,找到了。讓我更新全部細節的答案。 – abarnert