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

python如何將自己的包上傳到PyPi并可通過(guò)pip安裝的方法步驟

 更新時(shí)間:2022年05月27日 10:40:06   作者:一秋閑談  
本文主要介紹了python如何將自己的包上傳到PyPi并可通過(guò)pip安裝的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

當(dāng)逐漸在用python開(kāi)發(fā)項(xiàng)目或者日常使用時(shí),一般需要大量使用別人提供的包,這些包能高效的幫助我們快速高效的完成指定任務(wù)或者需求,不過(guò)有時(shí)也會(huì)想,自己如果能夠把自己的代碼打包并上傳到PyPi,后續(xù)其他人也可以通過(guò)pip進(jìn)行安裝,在為Python做出貢獻(xiàn)的同時(shí),對(duì)自己也是一件很cool的事情,本文章便詳細(xì)介紹如何將自己的代碼打包并上傳到PyPi。

在這之前,也建議大家在日常使用python時(shí),也需要有模塊的思維,將最為通用的任務(wù)模塊化,然后創(chuàng)建包,后續(xù)便可以通過(guò)導(dǎo)入這個(gè)包,快速進(jìn)行復(fù)用。

寫(xiě)該篇文章時(shí),作者已向PyPi上傳了一個(gè)名為  common-pkg-dennis 的包,大家可以通過(guò)  pip install common-pkg-dennis 下載安裝并查看(該包內(nèi)作者簡(jiǎn)單放置了之前封裝的關(guān)于數(shù)據(jù)庫(kù)操作和m3u8類視頻文件下載的方法,包括加密和未加密情況,均可進(jìn)行下載)

一、創(chuàng)建包

1.1 包概念簡(jiǎn)述

Python語(yǔ)言如其他編程語(yǔ)言,講求代碼最大化復(fù)用,函數(shù)和類是最初級(jí)的復(fù)用,模塊(本質(zhì)是一個(gè)py文件)是更高一級(jí)的復(fù)用,而包(本質(zhì)是包含py文件且包含一個(gè)__init__.py文件的文件夾)則是最高程度的復(fù)用,一般情況下,一個(gè)包會(huì)包含一種完成的解決方案,比如scrapy,其中包含了完整的爬蟲(chóng)解決方案。

此處只是簡(jiǎn)單介紹以上概念,詳細(xì)的可以通過(guò)學(xué)習(xí)基礎(chǔ)Python知識(shí)獲得。

1.2 創(chuàng)建包結(jié)構(gòu)

通常意義上的包結(jié)構(gòu)如下:

example_package
----example_pkg
    ----__init__.py

其中,example_package和example_pkg均為一個(gè)文件夾,而__init__.py則為文件夾example_pkg內(nèi)的一個(gè)py文件,該文件為包的標(biāo)示,是必須有的,可以為空,至于__init__.py文件的作用,此處不進(jìn)行介紹

當(dāng)然包可以有多層結(jié)構(gòu),比如下面的結(jié)構(gòu):

example_package
----example_pkg
    ----__init__.py
    ----sec_example_pkg
        ----__init__.py

1.3 本地使用

一般在日常使用python時(shí),可將處理關(guān)聯(lián)性較高的代碼和模塊,包含到一個(gè)包內(nèi),比如下面的包,即包含了處理媒體相關(guān)的模塊

media
----__init__.py
----video
    ----__init__.py
    ----volume.py     #包含處理聲音相關(guān)函數(shù)等
    ----convert.py    #包含轉(zhuǎn)碼相關(guān)功能
    ----combine.py    #包含視頻合成相關(guān)
----audio
    ----__init__.py
    ----convert.py    #包含轉(zhuǎn)碼相關(guān)功能
    ----compile.py    #包含編譯相關(guān)功能

然后將以上包移動(dòng)到python的根site_packages文件夾內(nèi),或者指定虛擬環(huán)境內(nèi)的site_packages內(nèi),然后就可以直接使用import導(dǎo)入以上包或者指定模塊,python會(huì)按照包和模塊搜索路徑完成加載

一般日常中,我們基本達(dá)到這個(gè)程度,不過(guò),如果自己感覺(jué)自己維護(hù)的包足夠優(yōu)秀,或者在解決特定領(lǐng)域問(wèn)題時(shí),足夠強(qiáng)大且性能優(yōu)異,可上傳到PyPi并與他人共享,說(shuō)不定自己的包后面很有可能成為python后續(xù)版本內(nèi)的buildin模塊。

二、上傳前準(zhǔn)備

2.1 完善包相關(guān)信息

我們接著使用example項(xiàng)目舉例,需要在該文件夾內(nèi)創(chuàng)建以下文件,以為接下來(lái)創(chuàng)建可供分發(fā)的文件做準(zhǔn)備

example_package
----LICENSE.txt    #版權(quán)聲明文件
----README.md      #分發(fā)包的詳細(xì)介紹文件
----example_pkg
    ----__init__.py
----setup.py       #為打包做準(zhǔn)備的設(shè)置文件
----tests          #測(cè)試文件夾,一般用不到

2.1.2 setup.py簡(jiǎn)述

setip.py文件相對(duì)比較關(guān)鍵,一般在該文件內(nèi)約定此次分發(fā)的包的版本號(hào)、名稱、作者、聯(lián)系方式、項(xiàng)目地址、python版本要求等信息,其文件內(nèi)最基本的主信息如下:

import setuptools #導(dǎo)入setuptools打包工具
 
with open("README.md", "r", encoding="utf-8") as fh:
    long_description = fh.read()
 
setuptools.setup(
    name="example-pkg-YOUR-USERNAME", # 用自己的名替換其中的YOUR_USERNAME_
    version="0.0.1",    #包版本號(hào),便于維護(hù)版本
    author="Example Author",    #作者,可以寫(xiě)自己的姓名
    author_email="author@example.com",    #作者聯(lián)系方式,可寫(xiě)自己的郵箱地址
    description="A small example package",#包的簡(jiǎn)述
    long_description=long_description,    #包的詳細(xì)介紹,一般在README.md文件內(nèi)
    long_description_content_type="text/markdown",
    url="https://github.com/pypa/sampleproject",    #自己項(xiàng)目地址,比如github的項(xiàng)目地址
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.6',    #對(duì)python的最低版本要求
)

2.1.3 README.md文件簡(jiǎn)述

README.md文件主要是用來(lái)對(duì)此次發(fā)行的包的詳細(xì)說(shuō)明,包括用法和注意事項(xiàng)等

# Example Package
#在此文件內(nèi),可使用markdown撰寫(xiě)對(duì)包的詳細(xì)介紹和說(shuō)明,便于別人熟悉和使用,在此不再贅述
This is a simple example package. You can use
[Github-flavored Markdown](https://guides.github.com/features/mastering-markdown/)
to write your content.

2.1.4 LICENSE文件簡(jiǎn)述

版權(quán)聲明文件,一般告訴使用者可以在什么場(chǎng)景下使用,如果想詳細(xì)了解,可訪問(wèn) https://choosealicense.com 進(jìn)行了解,此處不再詳細(xì)展開(kāi),一般直接將以下文案復(fù)制至文件內(nèi)即可

Copyright (c) 2021 The Python Packaging Authority
 
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
 
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
 
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

2.2 創(chuàng)建可供分發(fā)的包

2.2.1 安裝或更新setuptools 和wheel

一般使用setuptools和wheel工具打包生成可上傳和分發(fā),并可使用pip安裝的包文件

#安裝或更新setuotools和wheel
python3 -m pip install  --upgrade setuptools wheel

2.2.2 打包并生成tar.gz和whl文件

然后,在終端或cmd命令窗,將當(dāng)前路徑cd到setup.py文件所在文件夾,并正式打包

#以mac為例
cd example_packages/example_pkg
#運(yùn)行以下命令
python3 setup.py sdist bdist_wheel

運(yùn)行完畢后,如果順利,則會(huì)在與setup.py文件同一層級(jí),產(chǎn)生一個(gè)dist文件夾,此時(shí)文件夾結(jié)構(gòu)如下:

example_package
----LICENSE.txt    #版權(quán)聲明文件
----README.md      #分發(fā)包的詳細(xì)介紹文件
----example_pkg
    ----__init__.py
----setup.py       #為打包做準(zhǔn)備的設(shè)置文件
----tests          #測(cè)試文件夾,一般用不到
----dist

該文件夾內(nèi)會(huì)包含whl和tar.gz類型文件,此時(shí),其實(shí)可以直接將該文件轉(zhuǎn)發(fā)給朋友,朋友保存到本地,就可通過(guò)pip進(jìn)行安裝,不過(guò)這樣還沒(méi)達(dá)到我們的目的。

三、上傳包至PyPi

3.1 使用PyPi測(cè)試環(huán)境先熟悉上傳步驟

PyPi為了便于大家練習(xí)上傳過(guò)程,所以還同步提供了功能與PyPi完全一樣但相互隔離的測(cè)試環(huán)境,一般通過(guò)twine包將以上打包好的文件上傳至PyPi

在這之前,大家需要首先注冊(cè)一個(gè)test環(huán)境的PyPi賬號(hào),可通過(guò)鏈接 https://test.pypi.org/account/register/ 進(jìn)行注冊(cè)。

然后大家需要在我的→account setting處設(shè)置自己用API上傳時(shí)使用的token信息,工作原理類似git hub,快速傳送門(mén) https://test.pypi.org/manage/account/#api-tokens。

好了,一切準(zhǔn)備就緒

3.1.1 安裝twine

首先使用以下命令安裝或更新twine

python3 -m pip install --user --upgrade twine

3.1.2 使用twine上傳

此處,我們將dist下的分發(fā)文件,先上傳到PyPi的測(cè)試環(huán)境,上傳完畢后,可以在測(cè)試環(huán)境的PyPi自己的主頁(yè),your projects處查看并管理(包括版本信息等,一般就是setup.py文件內(nèi)設(shè)置的信息)

注意,在終端或cmd窗內(nèi)運(yùn)行以下命令時(shí),均需保證當(dāng)前文件夾路徑與setpy.py一致

python3 -m twine upload --repository testpypi dist/*

當(dāng)運(yùn)行以上命令后,一般會(huì)出現(xiàn)Enter your username和Enter your password提示,其中username輸入__token__,password輸入token值(使用測(cè)試環(huán)境的token值),然后按Enter即可

3.2 正式上傳至PyPi

當(dāng)在測(cè)試環(huán)境上傳成功后,便可上傳至PyPi的生產(chǎn)環(huán)境

python3 -m twine upload dist/*

當(dāng)運(yùn)行以上命令后,一般會(huì)出現(xiàn)Enter your username和Enter your password提示,其中username輸入__token__,password輸入token值(使用正式環(huán)境的token值),然后按Enter即可

到此,大功告成,接下來(lái),便可直接用pip進(jìn)行安裝了

四、使用pip安裝測(cè)試

4.1 安裝PyPi測(cè)試環(huán)境的包

運(yùn)行以下命令,則會(huì)從PyPi測(cè)試環(huán)境下載并安裝上傳的分發(fā)包

python3 -m pip install --index-url https://test.pypi.org/simple/ --no-deps example-pkg-YOUR-USERNAME #其中 example-pkg-YOUR-USERNAME 即自己指定的包名

4.2 安裝PyPi正式環(huán)境的包

pip install example-pkg-YOUR-USERNAME

五、包版本更新

后續(xù),如果需要對(duì)自己的包發(fā)布新版本,照以上步驟完成即可,別忘了修改setup.py文件內(nèi)的版本號(hào)信息

到此這篇關(guān)于python如何將自己的包上傳到PyPi并可通過(guò)pip安裝的方法步驟的文章就介紹到這了,更多相關(guān)python包上傳到PyPi并通過(guò)pip安裝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python 時(shí)間處理之月份加減問(wèn)題

    python 時(shí)間處理之月份加減問(wèn)題

    這篇文章主要介紹了python 時(shí)間處理之月份加減問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • PyTorch基礎(chǔ)之torch.nn.Conv2d中自定義權(quán)重問(wèn)題

    PyTorch基礎(chǔ)之torch.nn.Conv2d中自定義權(quán)重問(wèn)題

    這篇文章主要介紹了PyTorch基礎(chǔ)之torch.nn.Conv2d中自定義權(quán)重問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • python matlibplot繪制3D圖形

    python matlibplot繪制3D圖形

    這篇文章主要為大家詳細(xì)介紹了python matlibplot繪制3D圖形,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • pytorch版本PSEnet訓(xùn)練并部署方式

    pytorch版本PSEnet訓(xùn)練并部署方式

    這篇文章主要介紹了pytorch版本PSEnet訓(xùn)練并部署方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 最新pycharm安裝教程

    最新pycharm安裝教程

    這篇文章主要介紹了最新pycharm安裝教程,需要的朋友可以參考下
    2020-11-11
  • 基于pycharm實(shí)現(xiàn)批量修改變量名

    基于pycharm實(shí)現(xiàn)批量修改變量名

    這篇文章主要介紹了基于pycharm實(shí)現(xiàn)批量修改變量名,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python eventlet綠化和patch原理

    python eventlet綠化和patch原理

    這篇文章主要介紹了python eventlet綠化和patch原理,幫助大家更好的理解和學(xué)習(xí)python eventlet工具的使用,感興趣的朋友可以了解下
    2020-11-11
  • Python實(shí)現(xiàn)FTP文件定時(shí)自動(dòng)下載的步驟

    Python實(shí)現(xiàn)FTP文件定時(shí)自動(dòng)下載的步驟

    這篇文章主要介紹了Python實(shí)現(xiàn)FTP文件定時(shí)自動(dòng)下載的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Pytorch - TORCH.NN.INIT 參數(shù)初始化的操作

    Pytorch - TORCH.NN.INIT 參數(shù)初始化的操作

    這篇文章主要介紹了Pytorch - TORCH.NN.INIT 參數(shù)初始化的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • 在windows系統(tǒng)中實(shí)現(xiàn)python3安裝lxml

    在windows系統(tǒng)中實(shí)現(xiàn)python3安裝lxml

    本文主要給大家簡(jiǎn)單介紹了下在windows以及l(fā)inux系統(tǒng)中使用Python安裝LXML模塊的教程,非常簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下
    2016-03-03

最新評(píng)論