新四季網

python安裝pip包(如何將Python包發布到)

2023-10-22 23:59:52 1

在本文中,讓我們了解如何開發 Python 包,然後將其發布到 PyPi 進行分發。這是一篇包含一些高級概念的技術文章,但我將花一些時間詳細介紹每個概念,並在我們繼續進行時提供執行所有步驟的演練。python 程式設計師經常在 python 應用程式中使用各種包,如 Pandas、NumPy 等,以使其更健壯並利用 SDK 的豐富功能。為了在您的代碼中使用任何此類包,您首先需要在您的機器上安裝這些包,然後將其導入您的代碼中。

當我們談論PIP(python 中著名的包管理工具)時,這個想法可能看起來很熟悉。為了在 python 中安裝任何包,我們使用 pip install 並且包被安裝在我們的機器上。但是,這些包維護在稱為PyPi或 Python 包索引的中央存儲庫中。PyPi 是 Python 包的官方第三方軟體存儲庫。每當您運行 pip install 命令時,pip 工具都會在此存儲庫中搜索包,然後將其下載並安裝到您的機器或虛擬環境中。

什麼是 Python 包

在 python 中開發包時,第一件事是你應該知道 python 中的包和模塊是什麼。您在.py文件中編寫的任何代碼在 python 中都稱為模塊。模塊可以導入到另一個模塊中。可以將針對任何特定操作的多個模塊的集合組合在一起以形成一個包。包還可以包含組織成目錄和子目錄的代碼。您可以從官方文檔中閱讀更多關於 python 模塊和包的信息。

發布 python 包的步驟非常簡單,如下所示。

1.編寫你的python模塊並將其保存在一個目錄下。

2. 創建包含必要信息的 setup.py 文件。

3. 選擇一個許可證並為您的項目提供一個 README 文件。

4. 在本地機器上生成分發檔案。

5. 嘗試在本地機器上安裝包。

6. 將包發布到TestPyPi存儲庫以檢查是否一切正常。

7. 最後,將包發布到PyPi存儲庫。

現在讓我們一個一個地執行上述每個步驟,將我們的包發布到 PyPi 存儲庫。

創建python包和目錄結構等文件。

您應該首先確定包的名稱,然後使用包的名稱創建目錄名稱。假設我們要發布一個名為「 quicksample 」的包,所以目錄應該是同名的。在其下創建另一個名為「 src 」的子目錄,並在src子目錄下放置一個 quicksample.py 文件。

此外,您還應該在項目的根目錄下包含一個 setup.py 文件、一個 readme.md 和一個 LICENSE 文件。您可以從GitHub 連結了解有關許可的更多信息。此時,您的項目結構應如下所示。

為了簡單起見,我們將在 quicksample.py 文件中編寫一個簡單的方法,以便在導入後調用。

def quicktext: print('Hello, welcome to QuickSample package.')

現在,讓我們開始編輯 setup.py 文件。您可以使用以下代碼段來更新您的設置文件。

import setuptoolswith open("README.md", "r") as fh: long_description = fh.readsetuptools.setup( , # This is the name of the package , # The initial release version , # Full name of the author , long_description=long_description, # Long description read from the the readme file , packages=setuptools.find_packages, # List of all python modules to be installed classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], # Information to filter the project on PyPi website python_requires='>=3.6', # Minimum version requirement of the package py_modules=["quicksample"], # Name of the python package package_dir={'':'quicksample/src'}, # Directory of the source code of the package install_requires=[] # Install other dependencies if any)

設置文件準備好後,最後一步是添加 readme.md 文件。它只是一個 markdown 文件,您可以在部署包時使用它來記錄包,或者也可以在 GitHub 上為您的項目記錄包。

A sample python package deployment utility for SQLShack Demo.

在本地機器上生成分發包

現在 python 包的代碼幾乎完成了,您可以開始構建分發檔案。存檔是壓縮文件,可幫助您的包跨多個平臺部署,並使其獨立於平臺。為了生成分發檔案,請從您的終端運行以下命令。

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

這將升級您機器上的 setuptools 庫以使用最新版本。在此之後,您需要從包的根目錄運行以下命令來生成分發文件。

python setup.py sdist bdist_wheel

運行上述命令後,您可以看到分發包將交付到目錄下 - build和dist,新創建的目錄如下所示。除此之外,您還可以看到項目原始碼中的egg文件信息也已更新。

在本地機器上安裝包。

現在我們已經準備好分發文件,我們可以繼續嘗試安裝和導入包以測試它是否工作正常。為了在本地機器上安裝包,從根目錄運行以下命令。

pip install -e .

如上圖所示,第一步我們使用命令在本地安裝包,安裝後,我們啟動 python shell 並導入它。然後我們調用 package 方法並將消息列印到終端。

將包發布到TestPyPi

一旦包在本地安裝並且工作正常,現在就可以將其發送到 TestPyPi 存儲庫了。這是所有 python 包的測試存儲庫,用於測試並查看所有代碼是否正常工作並且包代碼中沒有問題。這使它與官方 PyPi 存儲庫隔離,並確保只有經過全面測試的包才會部署到生產環境中。

打開https://test.pypi.org/並註冊用戶。註冊後,打開終端並運行以下命令。這將在你的機器上安裝一個名為「 twine 」的包,它將幫助將 python 包發送到存儲庫。

python -m pip install — user — upgrade twine

您可以在此處閱讀有關打包 python 應用程式和twine的官方文檔。安裝 twine 包後,首先運行以下命令將代碼發送到 TestPyPi。當您運行該命令時,系統會要求您提供與您在上一步中註冊帳戶時使用的相同的憑據。

python -m twine upload — repository testpypi dist/*

如上圖所示,python 包現已發送到 TestPyPi 存儲庫,您可以從上面終端中的 URL 連結查看它。

為了從測試存儲庫安裝包,首先我們將卸載已經存在的包,然後運行以下命令來安裝它。

pip uninstall quicksample

pip install -i https://test.pypi.org/quicksample/ quicksample==0.0.1

這將從 TestPyPi 存儲庫將包安裝到本地系統上。

將包發布到PyPi存儲庫

現在我們的包一切正常,是時候將它發布到官方 PyPi 存儲庫了。按照相同的步驟註冊一個帳戶,然後運行以下命令將包發送到官方存儲庫。

python -m twine upload dist/*

您現在可以使用標準命令安裝該軟體包。

結論

恭喜,你已經成功發布了你的 python 包。

在這篇進階文章中,我們了解了 Python 包是什麼,以及如何在 Python 中開發一個簡單的包。我們還了解了名為 PyPi 的 Python 第三方官方存儲庫,開發人員可以在其中發布自己的包並重用代碼。您可以將您的 python 代碼構建到sdists或wheel文件中,然後將其發布在 PyPi 上。

,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了