午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

實(shí)戰(zhàn)教程:如何將自己的Python包發(fā)布到PyPI上

 測(cè)試開(kāi)發(fā)技術(shù) 2022-06-18 發(fā)布于廣東

優(yōu)質(zhì)文章,第一時(shí)間送達(dá)!

1. PyPi的用途

Python中我們經(jīng)常會(huì)用到第三方的包,默認(rèn)情況下,用到的第三方工具包基本都是從Pypi.org里面下載。

我們舉個(gè)栗子: 如果你希望用Python實(shí)現(xiàn)一個(gè)金融量化分析工具,目前比較好用的金融數(shù)據(jù)來(lái)源是 Yahoo 和 Google。你可能需要讀取這 2 個(gè)平臺(tái)的 API,然后依次實(shí)現(xiàn)下載、分析數(shù)據(jù)的代碼。是不是好麻煩,這樣你可以到 PyPi 到上面去找找有沒(méi)有已經(jīng)寫(xiě)過(guò)這個(gè)內(nèi)容,幸運(yùn)的是,你真找到了,你找到了一個(gè) package 叫做 yfinance

https://github.com/ranaroussi/yfinance

這個(gè)時(shí)候你只需要一個(gè)命令,免除了我們從頭實(shí)現(xiàn)的麻煩:

pip install yfinance

就可以了,是不是非常方便。

PyPI 是 Python Package Index 的首字母簡(jiǎn)寫(xiě),其實(shí)表示的是 Python 的 Packag 索引,這個(gè)也是 Python 的官方索引。

需要先再本地環(huán)境安裝pip,然后如果要安裝其他工具包的話(huà)就使用指令:

pip install <package name>

官方地址:https:///

一句話(huà)解釋?zhuān)?strong>如果你使用的是 Java 項(xiàng)目的話(huà),你就將 PyPi 理解成 Maven 就行了。

那我們?nèi)绾螌⒆约洪_(kāi)發(fā)的一個(gè)包上傳到PyPI,供其它人使用呢。

2.Python包發(fā)布步驟

下面就開(kāi)始介紹如何將自己的Python項(xiàng)目發(fā)布到PyPI

2.1 創(chuàng)建目錄結(jié)構(gòu)

創(chuàng)建一個(gè)測(cè)試項(xiàng)目,例如project_demo,在該項(xiàng)目下,創(chuàng)建一個(gè)待發(fā)布的包目錄,例如:package_mikezhou_talk,并在該project_demo目錄下,依次創(chuàng)建:setup.py、LICENSEREADME.rst幾項(xiàng)文件,此時(shí)目錄結(jié)構(gòu)為:

?  project_demo tree -L 2
.
├── LICENSE
├── README.rst
├── package_mikezhou_talk
│   └── __init__.py
└── setup.py

1 directory, 4 files

2.2 準(zhǔn)備文件

接下來(lái)我們來(lái)逐一編寫(xiě)除了代碼以外的文件。

1、README.rst是關(guān)于項(xiàng)目的描述文件,一般包含怎樣安裝項(xiàng)目,怎樣使用項(xiàng)目等。markdown 語(yǔ)法可以參考 https://rest-sphinx-memo./en/latest/ReST.html

打開(kāi)README.rst并輸入以下內(nèi)容。可以自定義此項(xiàng),放入一些對(duì)項(xiàng)目的介紹。

# Example Package
This is a simple example package. You can use

[聯(lián)系作者](https://mp.weixin.qq.com/s/9FQ-Tun5FbpBepBAsdY62w)

to write your content.

2、LICENSE.txt,創(chuàng)建許可證

上傳到Python Package Index的每個(gè)包都包含許可證,這一點(diǎn)很重要。這告訴用戶(hù)安裝你的軟件包可以使用您的軟件包的條款。開(kāi)源License,有如MIT,Apache license 2.0等。有關(guān)選擇許可證的幫助,請(qǐng)?jiān)L問(wèn)https:///。選擇許可證后,打開(kāi) LICENSE并輸入許可證文本。

3、setup.py文件

setup.py是setuptools的構(gòu)建腳本,用來(lái)描述項(xiàng)目,打包的時(shí)候會(huì)用到這個(gè)文件。它告訴PyPI我們的項(xiàng)目叫什么名字,是什么版本,依賴(lài)哪些庫(kù),支持哪些操作系統(tǒng),可以在哪些版本的Python上運(yùn)行,等等。

標(biāo)準(zhǔn)腳本示例:

from distutils.core import setup
from setuptools import find_packages

with open("README.rst""r") as f:
  long_description = f.read()

setup(name='package_mikezhou_talk',  # 包名
      version='1.0.0',  # 版本號(hào)
      description='A small example package',
      long_description=long_description,
      author='mikezhou_talk',
      author_email='762357658@qq.com',
      url='https://mp.weixin.qq.com/s/9FQ-Tun5FbpBepBAsdY62w',
      install_requires=[],
      license='BSD License',
      packages=find_packages(),
      platforms=["all"],
      classifiers=[
          'Intended Audience :: Developers',
          'Operating System :: OS Independent',
          'Natural Language :: Chinese (Simplified)',
          'Programming Language :: Python',
          'Programming Language :: Python :: 2',
          'Programming Language :: Python :: 2.7',
          'Programming Language :: Python :: 3',
          'Programming Language :: Python :: 3.5',
          'Programming Language :: Python :: 3.6',
          'Programming Language :: Python :: 3.7',
          'Programming Language :: Python :: 3.8',
          'Topic :: Software Development :: Libraries'
      ],
      )

重要參數(shù)說(shuō)明:

  • name:項(xiàng)目的名稱(chēng),name是包的分發(fā)名稱(chēng)。
  • version:項(xiàng)目的版本。需要注意的是,PyPI上只允許一個(gè)版本存在,如果后續(xù)代碼有了任何更改,再次上傳需要增加版本號(hào)
  • author和author_email:項(xiàng)目作者的名字和郵件, 用于識(shí)別包的作者。
  • description:項(xiàng)目的簡(jiǎn)短描述
  • long_description:項(xiàng)目的詳細(xì)描述,會(huì)顯示在PyPI的項(xiàng)目描述頁(yè)面。必須是rst(reStructuredText) 格式的
  • packages:指定最終發(fā)布的包中要包含的packages。
  • install_requires:項(xiàng)目依賴(lài)哪些庫(kù),這些庫(kù)會(huì)在pip install的時(shí)候自動(dòng)安裝
  • classifiers:其他信息,一般包括項(xiàng)目支持的Python版本,License,支持的操作系統(tǒng)。

克隆setup.py倉(cāng)庫(kù)(推薦)

如果你覺(jué)得手寫(xiě)setup.py腳本文件難度大太,給你推薦另外一個(gè)簡(jiǎn)易方法。

大名鼎鼎的requests庫(kù)的作者大神kennethreitz為大家準(zhǔn)備了一個(gè)倉(cāng)庫(kù)作為一個(gè)setup.py的很好的模板,當(dāng)然你也可以自己手寫(xiě)setup.py。

git clone  https://github.com/kennethreitz/setup.py

建議大家直接編輯之前的倉(cāng)庫(kù)里的setup.py, 只需要修改一些必要的配置就可以了。

2.3 編寫(xiě)核心代碼

接下來(lái)我們就可以編寫(xiě)自己的代碼了,要注意源代碼文件夾(倉(cāng)庫(kù)里的package_mikezhou_talk包目錄)的名字與setup.py里配置的包名(Name)要一致。

這一部?jī)?nèi)容,就根據(jù)各自的需求,自行實(shí)現(xiàn)即可。例如:我在示例package_mikezhou_talk包目錄下,新建了一個(gè)main.py文件,在該文件下實(shí)現(xiàn)待實(shí)現(xiàn)的功能。

示例:

import itertools

case_list = ['用戶(hù)名''密碼']
value_list = ['正確''不正確''特殊符號(hào)''超過(guò)最大長(zhǎng)度']


def gen_case(item=case_list, value=value_list):
    '''輸出笛卡爾用例集合'''
    for i in itertools.product(item, value):
        print('輸入'.join(i))

def test_print():
     print("歡迎搜索關(guān)注公眾號(hào): 「測(cè)試開(kāi)發(fā)技術(shù)」!")

if __name__ == '__main__':
    test_print()

2.4 生成分發(fā)檔案

下一步是為包生成分發(fā)包。這些是上傳到包索引的檔案,可以通過(guò)pip安裝。

確保您擁有setuptools并wheel 安裝了最新版本:

python3 -m pip install --user --upgrade setuptools wheel

生成這前,可以先運(yùn)行python setup.py check檢查setup.py是否有錯(cuò)誤,如果沒(méi)報(bào)錯(cuò)誤,則進(jìn)行下一步輸出一般是running check。

1、準(zhǔn)備好上面的步驟, 一個(gè)包就基本完整了, 剩下的就是打包了,可以使用下面命令打包一個(gè)源代碼的包:

python setup.py sdist build

這樣在當(dāng)前目錄的dist文件夾下, 就會(huì)多出一個(gè)tar.gz結(jié)尾的包了:

2、也可以打包一個(gè)wheels格式的包, 使用下面的命令就可以了:

python setup.py bdist_wheel --universal

這樣會(huì)在dist文件夾下面生成一個(gè)whl文件.

3、或者從setup.py位于的同一目錄運(yùn)行此命令:

python3 setup.py sdist bdist_wheel

上面的命令會(huì)在dist目錄下生成一個(gè)tar.gz的源碼包和一個(gè).whl的Wheel包。

2.5 發(fā)布包到PyPi

1、接下來(lái)就是去https:///account/register/注冊(cè)賬號(hào),如果有賬號(hào)的請(qǐng)忽略,記住你的賬號(hào)和密碼,后面上傳包會(huì)使用。

2、接下來(lái)就是上傳你的包了,這里使用twine上傳。需要先安裝twine(用 twine上傳分發(fā)包,并且只有 twine> = 1.11.0 才能將元數(shù)據(jù)正確發(fā)送到 Pypi上)

pip install twine

3、安裝完之后,運(yùn)行下面的命令將庫(kù)上傳,上傳包,期間會(huì)讓你輸入注冊(cè)的用戶(hù)名和密碼

twine upload dist/*

輸入 PyPI注冊(cè)的用戶(hù)名和密碼。命令完成后,您應(yīng)該看到與此類(lèi)似的輸出:

?  twine upload dist/*
Uploading distributions to https://upload./legacy/
Enter your username: mikezhou_talk
Enter your password:
Uploading package_mikezhou_talk-1.0.0-py3-none-any.whl
100%|██████████████████████████████████████| 7.84k/7.84k [00:03<00:00, 2.29kB/s]
Uploading package_mikezhou_talk-1.0.0.tar.gz
100%|██████████████████████████████████████| 6.64k/6.64k [00:01<00:00, 6.05kB/s]

View at:
https:///project/package-mikezhou-talk/1.0.0/

上傳完成后,我們的項(xiàng)目就成功地發(fā)布到PyPI了。

3.驗(yàn)證發(fā)布PYPI成功

上傳完成了會(huì)顯示success,我們直接可以在PyPI上查看,如下:

您可以使用pip來(lái)安裝包并驗(yàn)證它是否有效。創(chuàng)建一個(gè)新的virtualenv (請(qǐng)參閱安裝包以獲取詳細(xì)說(shuō)明)并從TestPyPI安裝包:

python3 -m pip install --index-url https://test./simple/ package-mikezhou-talk

pip install package-mikezhou-talk -i https://www./simple/

如下圖所示:

進(jìn)入Python Shell驗(yàn)證結(jié)果如下:

至此,我們已經(jīng)成功地將自己開(kāi)發(fā)的Python程序發(fā)布到了PyPI,此時(shí)你,可以直接在你本地的環(huán)境通過(guò)pip命令安裝示例中的package-mikezhou-talk這個(gè)包了。

官網(wǎng)地址:

https:///project/package-mikezhou-talk/1.0.0/

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多