2016-11-04 54 views
1

我注意到,PyPI上發佈的大多數項目在他們的項目頁面中都包含一個「Py版本」元數據,但它們的值有所不同。PyPI項目頁面中的「Py版本」是什麼意思?這是否重要?

如果軟件包不是通用軟件包或不是純Python包,它們的值是可以理解的不同,以表示它們的目標平臺,如nose pagesimplejson page

但是其他一些通用純粹(據我所知)Python包仍然包含略有不同的內容。例如:

所以我的問題是,他們是由不同的工具鏈造成的作者用來建立他們的發行包?我運行python2 setup.py sdist bdist_wheel --universal upload的嘗試給了我一個「2.7」Py版本值。下一次,我會嘗試python3 ...然後twine ...看看我會得到什麼。

更重要的是,做所有這些事情嗎?我前面提到的命令行仍然構建了一個適用於Python 2和Python 3環境的其他人使用的通用包,不是嗎?

回答

1

任何你看到2.73.5或另一個Python版本,該列設置by the bdist_wheel command的基礎上,用於建立與的當前Python版本,但這是錯誤的值。這是Wheelels項目問題跟蹤器中的bug 102

這也是在PyPI項目中的reported as a bug。對於所有這些項目,真的應該說py2.py3。幸運的是,用於安裝輪子的工具並不重要,該專欄稱,您仍然有一個萬向輪,它將用於安裝在Python 2或Python 3上。

這不是PyPI的錯然而,通過上傳的工具,該字段被設置爲file_upload() XML-RPC handler從上傳器中取值不變,並將其插入數據庫以供以後顯示。在使用setuptools upload時,該值最終來自構建分發文件的代碼,因此在此情況下爲bdist_wheel

如果你關心自己的項目列出正確的信息,那麼我建議你使用twine uploader來替代;這個包extracts the pyversion field from the wheel filename。在Py版本列中設置了py2.py3的任何項目,都使用該工具進行上傳。 Twine有許多其他優點,尤其是您可以安全地使用它通過HTTPS上傳您的文件。

對於any值,這是通過手動上傳在PyPI將接口文件,或者其他工具或twinesetuptools bdist_wheel以前的版本,我不知道有關設置。