第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問如何比較Python中的版本號?

請問如何比較Python中的版本號?

森林海 2019-08-02 15:02:17
如何比較Python中的版本號?我正在瀏覽一個包含雞蛋的目錄,以便將這些雞蛋添加到sys.path..如果目錄中有兩個版本相同的.EGG,我只想添加最新的版本。我有一個正則表達式r"^(?P<eggName>\w+)-(?P<eggVersion>[\d\.]+)-.+\.egg$若要從文件名中提取名稱和版本,請執(zhí)行以下操作。問題是比較版本號,它是一個字符串,類似2.3.1.因為我在比較字符串,在10上面有2種類型,但是對于版本來說這是不正確的。>>> "2.3.1" > "10.1.1"True我可以做一些拆分、解析、轉(zhuǎn)換為int等等,最終我會找到一個解決辦法。但這是Python不是Java..有沒有一種比較版本字符串的優(yōu)雅方法?
查看完整描述

3 回答

?
達令說

TA貢獻1821條經(jīng)驗 獲得超6個贊

setuptools定義parse_version()..這個工具Pep 0440-版本識別并且還能夠解析不遵循PEP的版本。此函數(shù)由easy_installpip若要處理版本比較,請執(zhí)行以下操作。從博士:

解析了PEP 440定義的項目版本字符串。返回的值將是一個表示版本的對象。這些對象可以相互比較和排序。排序算法是由PEP 440定義的,另外,任何不是有效PEP 440版本的版本都將被認(rèn)為小于任何有效的PEP 440版本,無效版本將繼續(xù)使用原始算法進行排序。

引用的“原始算法”是在PEP 440存在之前在舊版本的docs中定義的。

在語義上,這種格式是distutils‘StrictVersionLooseVersion類;如果您提供的版本將與StrictVersion然后他們會用同樣的方式進行比較。否則,比較更像是一種“更聰明”的LooseVersion..可以創(chuàng)建病態(tài)版本編碼方案來欺騙這個解析器,但是在實踐中它們應(yīng)該是非常罕見的。

這個文獻資料提供一些示例:

如果您想確定所選的編號方案按照您認(rèn)為的方式工作,則可以使用pkg_resources.parse_version()函數(shù)來比較不同的版本號:

>>> from pkg_resources import parse_version>>> parse_version('1.9.a.dev') == parse_version('1.9a0dev')True>>> parse_version('2.1-rc2') < parse_version('2.1')True>>> parse_version('0.6a9dev-r41475') < parse_version('0.6a9')True

如果不使用setuptools,則包裝項目將此功能和其他與打包相關(guān)的功能拆分到一個單獨的庫中。

from packaging import version
version.parse('1.0.3.dev')from pkg_resources import parse_version
parse_version('1.0.3.dev')




查看完整回答
反對 回復(fù) 2019-08-03
?
慕姐4208626

TA貢獻1852條經(jīng)驗 獲得超7個贊

將版本字符串轉(zhuǎn)換為元組并從那里開始有什么問題?對我來說很優(yōu)雅

>>> (2,3,1) < (10,1,1)True>>> (2,3,1) < (10,1,1,1)True>>> (2,3,1,10) < (10,1,1,1)True>>> (10,3,1,10) < (10,1,1,1)False>>> (10,3,1,10) < (10,4,1,1)True

@Kindall的解決方案是代碼看起來有多好的一個快速例子。


查看完整回答
反對 回復(fù) 2019-08-03
  • 3 回答
  • 0 關(guān)注
  • 635 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號