最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

一、創(chuàng)建包

1.1 包概念簡述

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

此處只是簡單介紹以上概念,詳細的可以通過學習基礎Python知識獲得。

1.2 創(chuàng)建包結構

通常意義上的包結構如下:

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

其中,example_package和example_pkg均為一個文件夾,而__init__.py則為文件夾example_pkg內的一個py文件,該文件為包的標示,是必須有的,可以為空,至于__init__.py文件的作用,此處不進行介紹

當然包可以有多層結構,比如下面的結構:

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

1.3 本地使用

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

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

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

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

二、上傳前準備

2.1 完善包相關信息

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

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

2.1.2 setup.py簡述

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

import setuptools #導入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",    #包版本號,便于維護版本
    author="Example Author",    #作者,可以寫自己的姓名
    author_email="author@example.com",    #作者聯(lián)系方式,可寫自己的郵箱地址
    description="A small example package",#包的簡述
    long_description=long_description,    #包的詳細介紹,一般在README.md文件內
    long_description_content_type="text/markdown",
    url="https://github.com/pypa/sampleproject",    #自己項目地址,比如github的項目地址
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.6',    #對python的最低版本要求
)

2.1.3 README.md文件簡述

README.md文件主要是用來對此次發(fā)行的包的詳細說明,包括用法和注意事項等

# Example Package
#在此文件內,可使用markdown撰寫對包的詳細介紹和說明,便于別人熟悉和使用,在此不再贅述
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文件簡述

版權聲明文件,一般告訴使用者可以在什么場景下使用,如果想詳細了解,可訪問 https://choosealicense.com 進行了解,此處不再詳細展開,一般直接將以下文案復制至文件內即可

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命令窗,將當前路徑cd到setup.py文件所在文件夾,并正式打包

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

運行完畢后,如果順利,則會在與setup.py文件同一層級,產生一個dist文件夾,此時文件夾結構如下:

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

該文件夾內會包含whl和tar.gz類型文件,此時,其實可以直接將該文件轉發(fā)給朋友,朋友保存到本地,就可通過pip進行安裝,不過這樣還沒達到我們的目的。

三、上傳包至PyPi

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

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

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

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

好了,一切準備就緒

3.1.1 安裝twine

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

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

3.1.2 使用twine上傳

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

注意,在終端或cmd窗內運行以下命令時,均需保證當前文件夾路徑與setpy.py一致

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

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

3.2 正式上傳至PyPi

當在測試環(huán)境上傳成功后,便可上傳至PyPi的生產環(huán)境

python3 -m twine upload dist/*

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

到此,大功告成,接下來,便可直接用pip進行安裝了

四、使用pip安裝測試

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

運行以下命令,則會從PyPi測試環(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ù),如果需要對自己的包發(fā)布新版本,照以上步驟完成即可,別忘了修改setup.py文件內的版本號信息

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

相關文章

  • python抓取需要掃微信登陸頁面

    python抓取需要掃微信登陸頁面

    這篇文章主要介紹了python抓取需要掃微信登陸頁面的相關知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • django框架F&Q 聚合與分組操作示例

    django框架F&Q 聚合與分組操作示例

    這篇文章主要介紹了django框架F&Q 聚合與分組操作,結合實例形式詳細分析了Django框架查詢條件取對象中某列值、構建搜索條件以及聚合查詢等相關操作技巧,需要的朋友可以參考下
    2019-12-12
  • python通過ftplib登錄到ftp服務器的方法

    python通過ftplib登錄到ftp服務器的方法

    這篇文章主要介紹了python通過ftplib登錄到ftp服務器的方法,涉及Python使用ftplib模塊的相關技巧,需要的朋友可以參考下
    2015-05-05
  • Python實現(xiàn)將內容寫入文件的五種方法總結

    Python實現(xiàn)將內容寫入文件的五種方法總結

    本篇帶你詳細看一下python將內容寫入文件的方法以及細節(jié),主要包括write()方法、writelines()?方法、print()?函數(shù)、使用?csv?模塊、使用?json?模塊,需要的可以參考一下
    2023-04-04
  • numpy中三維數(shù)組中加入元素后的位置詳解

    numpy中三維數(shù)組中加入元素后的位置詳解

    今天小編就為大家分享一篇numpy中三維數(shù)組中加入元素后的位置詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python中的進制轉換詳解

    Python中的進制轉換詳解

    這篇文章主要介紹了Python中的進制轉換詳解,python內置函數(shù)進行進制轉換的原理是將讀入的一個字符串(python默認讀入的都是字符串形式)轉為10進制,然后再用相關函數(shù)進行其他進制轉換,需要的朋友可以參考下
    2023-08-08
  • python自動化測試用例全對偶組合與全覆蓋組合比較

    python自動化測試用例全對偶組合與全覆蓋組合比較

    這篇文章主要為大家介紹了python自動化測試用例全對偶組合與全覆蓋組合比較,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Flask框架利用Echarts實現(xiàn)繪制圖形

    Flask框架利用Echarts實現(xiàn)繪制圖形

    echarts是百度推出的一款開源的基于JavaScript的可視化圖表庫,該開發(fā)庫目前發(fā)展非常不錯,且支持各類圖形的繪制可定制程度高。如下演示案例中,將分別展示運用該繪圖庫如何前后端交互繪制(餅狀圖,柱狀圖,折線圖)這三種最基本的圖形,需要的可以參考一下
    2022-10-10
  • 徹底解決Python包下載慢問題

    徹底解決Python包下載慢問題

    這篇文章主要介紹了徹底解決Python包下載慢問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • python使用cartopy庫繪制臺風路徑代碼

    python使用cartopy庫繪制臺風路徑代碼

    大家好,本篇文章主要講的是python使用cartopy庫繪制臺風路徑代碼,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02

最新評論

定州市| 噶尔县| 师宗县| 成安县| 建湖县| 玉田县| 洪洞县| 景德镇市| 紫金县| 寿宁县| 舒城县| 新营市| 庆城县| 武冈市| 盈江县| 漯河市| 蒲城县| 社旗县| 成都市| 武清区| 巴彦县| 德州市| 墨竹工卡县| 南宁市| 宝鸡市| 民乐县| 乌鲁木齐市| 台北县| 高碑店市| 枣强县| 大港区| 巩留县| 宜兰县| 神农架林区| 新宁县| 海宁市| 镇赉县| 寻甸| 昌乐县| 马鞍山市| 陇西县|