欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python打包模塊wheel的使用方法與將python包發(fā)布到PyPI的方法詳解

 更新時(shí)間:2020年02月12日 14:39:08   作者:winycg  
這篇文章主要介紹了Python打包模塊wheel的使用方法與將python包發(fā)布到PyPI的方法詳解,需要的朋友可以參考下

wheel文件

Wheel和Egg都是python的打包格式,目的是支持不需要編譯或制作的安裝過程,實(shí)際上也是一種壓縮文件,將.whl的后綴改為.zip即可可看到壓縮包里面的內(nèi)容。按照官網(wǎng)說法,wheels是發(fā)行版Python的新標(biāo)準(zhǔn)并且要取代.egg。

Egg格式是由setuptools在2004年引入,而Wheel格式是由PEP427在2012年定義。 Wheel現(xiàn)在被認(rèn)為是Python的二進(jìn)制包的標(biāo)準(zhǔn)格式。

以下是Wheel和Egg的主要的不同點(diǎn):

Wheel有一個(gè)官方的PEP427來定義,而Egg沒有PEP定義。

Wheel是一種分發(fā)格式,即打包格式。而Egg既是一種分發(fā)格式,也是一種 運(yùn)行時(shí)安裝的格式,并且是可以被import的。

Wheel文件不會(huì)包含.pyc文件

Wheel使用和PEP376兼容的.dist-info目錄,而Egg使用.egg-info目錄。

Wheel有著更豐富的命名規(guī)則。

Wheel是有版本的,每個(gè)Wheel文件都包含wheel規(guī)格的版本和打包它的實(shí)現(xiàn)。

Wheel在內(nèi)部被sysconfig path type管理,因此轉(zhuǎn)向其他格式也更容易。

distutils和setuptools工具

用來Python環(huán)境中構(gòu)建和安裝額外的模塊,模塊可以基于Python,也可以C/C++寫的擴(kuò)展模塊,可以是python包,包中包含了C和Python編寫的模塊。

setuptools是 Python Enterprise Application Kit(PEAK)的一個(gè)副項(xiàng)目,它是一組Python的 distutilsde工具的增強(qiáng)版(適用于 Python 2.3.5 以上的版本,64 位平臺(tái)則適用于 Python 2.4 以上的版本),可以讓程序員更方便的創(chuàng)建和發(fā)布 Python 包,特別是那些對(duì)其它包具有依賴性的狀況。

setuptools重點(diǎn)在于setup.py文件編寫:

setup.py參數(shù)介紹:

name : 打包起來的包的文件名

version : 版本號(hào),添加為打包文件的后綴名

author : 作者

author_email : 作者的郵箱

py_modules : 打包的.py文件

packages: 打包的python文件夾

include_package_data : 項(xiàng)目里會(huì)有一些非py文件,比如html和js等,這時(shí)候就要靠include_package_data 和 package_data 來指定了。package_data:一般寫成{‘your_package_name': [“files”]}, include_package_data還沒完,還需要修改MANIFEST.in文件.MANIFEST.in文件的語法為: include xxx/xxx/xxx/.ini/(所有以.ini結(jié)尾的文件,也可以直接指定文件名)

license : 支持的開源協(xié)議

description : 對(duì)項(xiàng)目簡(jiǎn)短的一個(gè)形容

ext_modules : 是一個(gè)包含Extension實(shí)例的列表,Extension的定義也有一些參數(shù)。

ext_package : 定義extension的相對(duì)路徑

requires : 定義依賴哪些模塊

provides : 定義可以為哪些模塊提供依賴

data_files :指定其他的一些文件(如配置文件),規(guī)定了哪些文件被安裝到哪些目錄中。如果目錄名是相對(duì)路徑,則是相對(duì)于sys.prefix或sys.exec_prefix的路徑。如果沒有提供模板,會(huì)被添加到MANIFEST文件中。

將python文件(.py)封裝成可安裝使用的模塊

參考:https://docs.python.org/3.6/distutils/introduction.html#distutils-simple-example

printtest.py

def test():

  print('print test')

將以上.py文件做成python模塊,需要在相同目錄下創(chuàng)建setup.py文件,setup.py中輸入配置信息:

from setuptools import setup

setup(name='printtest',

   version='1.0',

   py_modules=['printtest'],

   )

打開終端,定位到該文件夾下,輸入:

python setup.py sdist

此時(shí)在目錄中生成dist文件夾,文件夾中有testpg-1.0.tar.gz文件,用戶安裝的話只需要testpg-1.0.tar.gz文件即可。

將此文件解壓得到testpg-1.0文件夾,會(huì)發(fā)現(xiàn)該文件夾有我們剛剛書寫的3個(gè)py文件,還有一個(gè)PKG-INFO,打開該文件,會(huì)顯示該模塊的具體信息:由于我們沒有設(shè)置,所以為UNKOWN

Metadata-Version: 1.0

Name: printtest

Version: 1.0

Summary: UNKNOWN

Home-page: UNKNOWN

Author: UNKNOWN

Author-email: UNKNOWN

License: UNKNOWN

Description: UNKNOWN

Platform: UNKNOWN

終端定位到此文件夾下,輸入以下命令,模塊將會(huì)被安裝到解釋器對(duì)應(yīng)的Lib/site-packages目錄下:

python setup.py install

安裝后,會(huì)發(fā)現(xiàn)Lib/site-packages目錄下存在printtest.py文件和printtest-1.0-py3.6.egg-info

應(yīng)用:

import printtest

printtest.test()

輸出:

print test

封裝Python包

導(dǎo)入單個(gè)Python文件時(shí)成為Python模塊,而包含多個(gè)Python文件的文件夾成為一個(gè)Python包。本節(jié)主要講述怎樣封裝一個(gè)Python包。

1.創(chuàng)建一個(gè)文件夾,將需要封裝的pagtest文件夾(里面為.py文件,需要包括一個(gè)__init__.py文件,內(nèi)容可以為空)放到該文件夾中,然后創(chuàng)建setup.py文件對(duì)包進(jìn)行配置:

from setuptools import setup
setup(name='pagtest',
   version='1.0.0',
   description='A print test for PyPI',
   author='winycg',
   author_email='win@163.com',
   url='https://www.python.org/',
   license='MIT',
   keywords='ga nn',
   project_urls={
      'Documentation': 'https://packaging.python.org/tutorials/distributing-packages/',
      'Funding': 'https://donate.pypi.org',
      'Source': 'https://github.com/pypa/sampleproject/',
      'Tracker': 'https://github.com/pypa/sampleproject/issues',
   },
   packages=['pagtest'],
   install_requires=['numpy>=1.14', 'tensorflow>=1.7'],
   python_requires='>=3'
   )

2.創(chuàng)建README.txt文件用于對(duì)文件的安裝以及使用信息做描述

3.目前文件夾的目錄的架構(gòu)為:

pagtest/

    __init__.py

    print1.py

    print2.py

setup.py

README.txt

輸入以下命令進(jìn)行打包,制作source distribution(源代碼發(fā)布包),此命令將會(huì)把所有內(nèi)容在dist/目錄打包為pagtest-1.0.0.tar.gz

python setup.py sdist

4.上傳到PyPI上。上傳時(shí),可以建立一個(gè)賬戶驗(yàn)證文件~/.pypirc(Windows不可以,因?yàn)槲募泻蟹欠ㄗ址?,也可以在上傳時(shí)輸入賬戶和密碼。

[distutils]

index-servers=pypi

[pypi]

repository = https://upload.pypi.org/legacy/

username = <username>

password = <password>

5.將命令行定位到此文件夾下,輸入命令對(duì)dist目錄下的pagtest-1.0.0.tar.gzt包進(jìn)行上傳,twine為Python包需要安裝:

twine upload dist/*

制作python包為wheel文件

wheel是一個(gè)已經(jīng)編譯好的包,在安裝時(shí)不需要編譯過程,安裝whl文件時(shí)要比發(fā)布的源文件安裝要快。

在如上第2步后,輸入如下命令即可在生成.whl

python setup.py bdist_wheel

.whl文件在dist目錄下,上傳到PyPI:

twine upload dist/*

更新Python包

修改setup.py中的版本號(hào),然后直接上傳即可

更多關(guān)于Python打包模塊wheel的使用方法請(qǐng)查看下面的相關(guān)鏈接

相關(guān)文章

  • 如何用Python獲取計(jì)算機(jī)名,ip地址,mac地址

    如何用Python獲取計(jì)算機(jī)名,ip地址,mac地址

    這篇文章主要介紹了如何用Python獲取計(jì)算機(jī)名,ip地址,mac地址,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • 關(guān)于Python自動(dòng)化操作Excel

    關(guān)于Python自動(dòng)化操作Excel

    這篇文章主要介紹了關(guān)于Python自動(dòng)化操作Excel, Python 是一種功能強(qiáng)大的編程語言,可以用于許多任務(wù),包括處理 Excel 文件,需要的朋友可以參考下
    2023-04-04
  • Django實(shí)現(xiàn)分頁顯示效果

    Django實(shí)現(xiàn)分頁顯示效果

    這篇文章主要為大家詳細(xì)介紹了Django實(shí)現(xiàn)分頁顯示效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • python 根據(jù)正則表達(dá)式提取指定的內(nèi)容實(shí)例詳解

    python 根據(jù)正則表達(dá)式提取指定的內(nèi)容實(shí)例詳解

    這篇文章主要介紹了python 根據(jù)正則表達(dá)式提取指定的內(nèi)容實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Python實(shí)現(xiàn)簡(jiǎn)單飛機(jī)大戰(zhàn)

    Python實(shí)現(xiàn)簡(jiǎn)單飛機(jī)大戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)簡(jiǎn)單飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 深入探究Python中變量的拷貝和作用域問題

    深入探究Python中變量的拷貝和作用域問題

    這篇文章主要介紹了Python中變量的拷貝和作用域問題,包括一些賦值、引用問題,以及相關(guān)函數(shù)在Python2和3版本之間的不同,需要的朋友可以參考下
    2015-05-05
  • python中數(shù)據(jù)庫like模糊查詢方式

    python中數(shù)據(jù)庫like模糊查詢方式

    這篇文章主要介紹了python中數(shù)據(jù)庫like模糊查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 詳解python中return和print的區(qū)別和用途

    詳解python中return和print的區(qū)別和用途

    在 Python 中,return 和 print 是兩種常見的語句,用于在函數(shù)中輸出信息或返回值,盡管它們看起來相似,但它們有不同的作用和用法,本文將詳細(xì)介紹 return 和 print 在函數(shù)中的區(qū)別,并提供豐富的示例代碼,以幫助你更好地理解它們的用途
    2023-11-11
  • 10張動(dòng)圖學(xué)會(huì)python循環(huán)與遞歸問題

    10張動(dòng)圖學(xué)會(huì)python循環(huán)與遞歸問題

    今天為大家整理了十張動(dòng)圖GIFS,有助于認(rèn)識(shí)循環(huán)、遞歸、二分檢索等概念的具體運(yùn)行情況。代碼實(shí)例以Python語言編寫,非常不錯(cuò),感興趣的朋友跟隨小編一起學(xué)習(xí)吧
    2021-02-02
  • Requests什么的通通爬不了的Python超強(qiáng)反爬蟲方案!

    Requests什么的通通爬不了的Python超強(qiáng)反爬蟲方案!

    今天帶大家學(xué)習(xí)Requests什么的通通爬不了的Python超強(qiáng)反爬蟲方案,文中有非常詳細(xì)的圖文介紹及代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05

最新評(píng)論