日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

发布自己的Python包(Pypi)

發布時間:2023/12/29 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 发布自己的Python包(Pypi) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

發布自己的Python包(Pypi)

我們經常使用 Pypi 來安裝包,但是有時候我們也想要發布自己的 Pypi 包,有可能我們寫了一個特別牛的包,也有可能我們只是想使用自己常用的一些輪子,可能這是我們日常編碼中很常用的一些輪子,我們在不同工程目錄、不同設備上都會頻繁使用的一些接口,可能我們自己對這些自己常用的接口很熟悉,但是卻因為環境的遷移而需要重復地實現,這時我們就可以發布一個自己的 Pypi 包,在環境遷移時使用熟悉的輪子只需要 pip install *** 即可。

就算這些輪子我們可能實現的沒有那么完美,”不足為外人道也“,但卻是我們最熟悉的,接口早已了然于心,因此這樣使用起來會很方便。

發布

注冊Pypi賬號

沒什么好多說的,出奇的簡單,不需要任何多余的東西,郵箱、用戶名、密碼即可。鏈接如下:

https://pypi.org/

開發自己的包

假設我想發布一個包,里面有我們常用的一些使用函數,包名稱為 SongUtils,我們先完成功能的開發,都在 SongUtils 目錄下,得到目錄結構如下:

├── SongUtils │ ├── AVAUtils.py │ ├── ImgUtils.py │ ├── MetricUtils.py │ ├── README.md │ └── __init__.py

__init__ 文件是必須的,這是一個package的象征,可以什么都不寫,但必須有。

準備setup.py

setup.py 是構建我們的Python包的關鍵,它的位置與我們的整個工程目錄同級,包含了我們這個包的一些關鍵信息和依賴等,簡單的可以參考下面筆者第一次發布包時的 setup.py 文件內容,其中各項看其名稱即可一目了然,更詳細的各項參數的含義網上其他博客也有介紹,在此不再贅述:

#!/usr/bin/env python #-*- coding:utf-8 -*-from setuptools import setup, find_packages #這個包沒有的可以pip一下setup(name = "SongUtils", #這里是pip項目發布的名稱version = "0.0.1", #版本號,數值大的會優先被pipkeywords = ["pip", "SongUtils"], # 關鍵字description = "Junjie's private utils.", # 描述long_description = "Junjie's private utils.",license = "MIT Licence", # 許可證url = "https://github.com/Adenialzz/SongUtils", #項目相關文件地址,一般是github項目地址即可author = "Adenialzz", # 作者author_email = "********@***.com",packages = find_packages(),include_package_data = True,platforms = "any",install_requires = ["numpy", "pillow"] #這個項目依賴的第三方庫 )

本地打包

完成 setup.py 文件后,我們的目錄樹如下:

├── SongUtils │ ├── AVAUtils.py │ ├── ImgUtils.py │ ├── MetricUtils.py │ ├── README.md │ └── __init__.py └── setup.py

然后在 setup.py 所在目錄下,我們運行它來將項目本地打包:

python setup.py sdist

沒有問題的話,在打包之后我們會得到如下目錄樹:

├── SongUtils │ ├── AVAUtils.py │ ├── ImgUtils.py │ ├── MetricUtils.py │ ├── README.md │ └── __init__.py ├── SongUtils.egg-info │ ├── PKG-INFO │ ├── SOURCES.txt │ ├── dependency_links.txt │ ├── requires.txt │ └── top_level.txt ├── dist │ └── SongUtils-0.0.1.tar.gz └── setup.py

上傳到Pypi服務器

首先在setup.py這一級的目錄下建立一個系統文件 .pypirc 內容如下:

[distutils] index-servers = pypi[pypi] username:你的PyPi用戶名 password:你的PyPi密碼

這里的用戶名密碼,就是我們第一步注冊時的賬號。

然后安裝一個上傳的工具來上傳即可:

pip install twine twine upload dist/SongUtils-0.0.1.tar.gz

驗證

至此我們整個Python包的發布過程就已經完成了,我們可以(在其他機器)安裝來驗證一下:

pip install SongUtils

然后準備一個測試文件:

# test.py import SongUtils# Call you functions to evaluate.

在測試文件中調用自己包中的函數,看測試是否正常工作:

python test.py

刪除

如果你想刪除自己的 Pypi 包,只需要登陸到自己的 Pypi 網站的賬戶,并進入到自己想要刪除的項目,然后選擇對應版本,點擊 Optins -> Delete 即可,過程中會要求你輸入刪除的版本號來防止誤刪除,在刪除后也會給你的郵箱發送郵件提醒。

但是,這不是一個好主意,因為前一個軟件包的所有用戶都會看到他們的安裝失敗。

如果要棄用程序包,可以執行的操作是使用指向新程序包的README發布最后一個發行版。有人為python-cli-ui做了那個,它被替換為cli-ui

你也可以:

  • setup.py運行時添加警告
  • 或在導入時
  • 或者用一個取決于新名稱的虛擬包替換包。

說明

這個過程只是一個簡單的 Python 包的發布過程,在過程中其實有許多需要注意的地方,比如 setup.py 文件應當寫的更加規范,整個包內的代碼也應當更加規范,應當有一個比較好的 Description 或者 README.md 文檔等等。這就留在以后有機會再說吧。

擴展閱讀:

python打包發布pypi踩坑記(最新貼心版本,認真對待自己的庫)

Ref:

https://www.cnblogs.com/suoyike1001/p/15216699.html

https://cloud.tencent.com/developer/ask/208868

總結

以上是生活随笔為你收集整理的发布自己的Python包(Pypi)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。