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

將自己的Python包發(fā)布到PyPI上的教程詳解

 更新時間:2023年09月11日 10:23:04   作者:Python數(shù)據(jù)開發(fā)  
在Python中我們經(jīng)常使用pip來安裝第三方Python軟件包,其實我們每個人都可以免費地將自己寫的Python包發(fā)布到PyPI上,本文小編就來教教大家如何將自己的Python包發(fā)布到PyPI上吧

1. PyPi的用途

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

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

https://github.com/ranaroussi/yfinance

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

pip install yfinance

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

PyPI 是 Python Package Index 的首字母簡寫,其實表示的是 Python 的 Packag 索引,這個也是 Python 的官方索引。

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

pip install <package name>

官方地址:https://pypi.org/

一句話解釋:如果你使用的是 Java 項目的話,你就將 PyPi 理解成 Maven 就行了。

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

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

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

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

創(chuàng)建一個測試項目,例如project_demo,在該項目下,創(chuàng)建一個待發(fā)布的包目錄,例如:package_mikezhou_talk,并在該project_demo目錄下,依次創(chuàng)建:setup.py、LICENSE、README.rst幾項文件,此時目錄結(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)備文件

接下來我們來逐一編寫除了代碼以外的文件。

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

打開README.rst并輸入以下內(nèi)容??梢宰远x此項,放入一些對項目的介紹。

# Example Package
This is a simple example package. You can use
to write your content.

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

上傳到Python Package Index的每個包都包含許可證,這一點很重要。這告訴用戶安裝你的軟件包可以使用您的軟件包的條款。開源License,有如MIT,Apache license 2.0等。有關(guān)選擇許可證的幫助,請訪問https://choosealicense.com/。選擇許可證后,打開 LICENSE并輸入許可證文本。

3、setup.py文件

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

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',  # 版本號
      description='A small example package',
      long_description=long_description,
      author='mike_talk',
      author_email='762357658@qq.com',
      url='',
      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ù)說明:

name:項目的名稱,name是包的分發(fā)名稱。

version:項目的版本。需要注意的是,PyPI上只允許一個版本存在,如果后續(xù)代碼有了任何更改,再次上傳需要增加版本號

author和author_email:項目作者的名字和郵件, 用于識別包的作者。

description:項目的簡短描述

long_description:項目的詳細(xì)描述,會顯示在PyPI的項目描述頁面。必須是rst(reStructuredText) 格式的

packages:指定最終發(fā)布的包中要包含的packages。

install_requires:項目依賴哪些庫,這些庫會在pip install的時候自動安裝

classifiers:其他信息,一般包括項目支持的Python版本,License,支持的操作系統(tǒng)。

克隆setup.py倉庫(推薦)

如果你覺得手寫setup.py腳本文件難度大太,給你推薦另外一個簡易方法。

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

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

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

2.3 編寫核心代碼

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

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

示例:

import itertools
case_list = ['用戶名', '密碼']
value_list = ['正確', '不正確', '特殊符號', '超過最大長度']
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)注公眾號: 「測試開發(fā)技術(shù)」!")
if __name__ == '__main__':
    test_print()

2.4 生成分發(fā)檔案

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

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

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

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

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

python setup.py sdist build

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

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

python setup.py bdist_wheel --universal

這樣會在dist文件夾下面生成一個whl文件.

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

python3 setup.py sdist bdist_wheel

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

2.5 發(fā)布包到PyPi

1、接下來就是去https://pypi.org/account/register/注冊賬號,如果有賬號的請忽略,記住你的賬號和密碼,后面上傳包會使用。

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

pip install twine

3、安裝完之后,運行下面的命令將庫上傳,上傳包,期間會讓你輸入注冊的用戶名和密碼

twine upload dist/*

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

?  twine upload dist/*
Uploading distributions to https://upload.pypi.org/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://pypi.org/project/package-mikezhou-talk/1.0.0/

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

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

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

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

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

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

如下圖所示:

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

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

官網(wǎng)地址:

https://pypi.org/project/package-mikezhou-talk/1.0.0/

以上就是將自己的Python包發(fā)布到PyPI上的教程詳解的詳細(xì)內(nèi)容,更多關(guān)于Python PyPI的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python 類的繼承實例詳解

    Python 類的繼承實例詳解

    這篇文章主要介紹了Python 類的繼承實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • python 實現(xiàn)一次性在文件中寫入多行的方法

    python 實現(xiàn)一次性在文件中寫入多行的方法

    今天小編就為大家分享一篇python 實現(xiàn)一次性在文件中寫入多行的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python中的屬性管理機(jī)制詳解

    python中的屬性管理機(jī)制詳解

    這篇文章主要介紹了python中的屬性管理機(jī)制,主要包括私有屬性和屬性限制-__slots__方法,文中詳細(xì)介紹了python中如何去聲明變量的相關(guān)知識,需要的朋友可以參考下
    2022-06-06
  • django連接oracle時setting 配置方法

    django連接oracle時setting 配置方法

    今天小編就為大家分享一篇django連接oracle時setting 配置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Django環(huán)境初始化腳本django_setup作用解析

    Django環(huán)境初始化腳本django_setup作用解析

    本文主要介紹了Django環(huán)境初始化腳本django_setup作用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • 淺析Python語言自帶的數(shù)據(jù)結(jié)構(gòu)有哪些

    淺析Python語言自帶的數(shù)據(jù)結(jié)構(gòu)有哪些

    Python已經(jīng)廣泛的應(yīng)用于數(shù)據(jù)分析、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)等眾多科學(xué)計算領(lǐng)域,這篇文章主要介紹了Python語言自帶的數(shù)據(jù)結(jié)構(gòu)有哪些?需要的朋友可以參考下
    2019-08-08
  • python實現(xiàn)簡單的飛機(jī)大戰(zhàn)游戲

    python實現(xiàn)簡單的飛機(jī)大戰(zhàn)游戲

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)簡單的飛機(jī)大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • python pandas分組聚合詳細(xì)

    python pandas分組聚合詳細(xì)

    分組聚合是數(shù)據(jù)處理中常見的場景,在pandas中用groupby方法實現(xiàn)分組操作,用agg方法實現(xiàn)聚合操作,在這篇文章里有主要介紹,感興趣的朋友請參考下文
    2021-09-09
  • 從基礎(chǔ)到進(jìn)階詳解Python字符串統(tǒng)計的實用指南

    從基礎(chǔ)到進(jìn)階詳解Python字符串統(tǒng)計的實用指南

    字符串處理是編程中最基礎(chǔ)也最常見的任務(wù)之一,本文將用通俗易懂的方式,帶你全面了解如何用Python實現(xiàn)字符串統(tǒng)計,涵蓋從最基礎(chǔ)的計數(shù)到高級的文本分析技巧,感興趣的小伙伴可以了解下
    2025-11-11
  • Python數(shù)據(jù)分析之?Pandas?Dataframe應(yīng)用自定義

    Python數(shù)據(jù)分析之?Pandas?Dataframe應(yīng)用自定義

    這篇文章主要介紹了Python數(shù)據(jù)分析之?Pandas?Dataframe應(yīng)用自定義,文章基于python的相關(guān)資料展開?Pandas?Dataframe應(yīng)用自定義的詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-05-05

最新評論

拜泉县| 辉县市| 蛟河市| 南京市| 广东省| 铁力市| 太湖县| 镇赉县| 梁平县| 米林县| 碌曲县| 宕昌县| 博客| 集贤县| 万年县| 梁平县| 新泰市| 墨玉县| 桃园市| 延川县| 南华县| 崇州市| 徐水县| 宁夏| 岳阳县| 安仁县| 厦门市| 卓资县| 青海省| 北票市| 长顺县| 焦作市| 瑞安市| 莫力| 万山特区| 湖口县| 张北县| 定安县| 江都市| 岗巴县| 射阳县|