1. 程式人生 > 程式設計 >python 如何上傳包到pypi

python 如何上傳包到pypi

有過一定的 Python 經驗的開發者都知道,當引入第三方包時,我們常常會使用 pip install 命令來下載並匯入包。

那麼,如何寫一個自己的包,上傳到 PyPI 呢,其他開發者也可以通過 pip install 命令下載並匯入?

本文提供了最簡單的示例。

準備好專案目錄

建立一個專案目錄,其目錄結構如下:

/packaging_tutorial
 /example_pkg
  __init__.py

其中,packaging_tutorial 是一個檔案目錄,example_pkg 是一個你希望上傳的 Python 包。

注:本人使用的是 virtualenv + virtualenvwrapper 構建的 Python 虛擬環境,因此 python 和 pip 命令(而非 python3 和 pip3)直接對應的是我所指定的虛擬環境(Python 3.6.7)。

建立一些必要檔案

再向 packaging_tutorial 中建立一些檔案。其目錄結構如下:

/packaging_tutorial
 /example_pkg
  __init__.py
 setup.py
 LICENSE
 README.md

建立 README.md 檔案

在 README.md 可以輸入一些介紹專案的文件。

# 測試

這只是一個測試。

- 測試 1
- 測試 2
- 測試 3

建立setup.py 檔案

setup.py 是 setuptools 的構建指令碼,它提供了包的各種資訊。

在 setup.py 中輸入以下程式碼:

import setuptools

with open("README.md","r") as fh:
  long_description = fh.read()

setuptools.setup(
  name="example-pkg-your-username",version="0.0.1",author="Example Author",author_email="[email protected]",description="A small example package",long_description=long_description,long_description_content_type="text/markdown",url="https://github.com/pypa/sampleproject",packages=setuptools.find_packages(),classifiers=[
    "Programming Language :: Python :: 3","License :: OSI Approved :: MIT License","Operating System :: OS Independent",],)

各個配置的欄位的含義應該是不言而喻的,如果想了解更多,參見官網解釋。

建立 LICENSE

LICENSE 是專案所遵循的許可證,以 MIT 為例:

Copyright (c) 2018 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.

存檔釋出版本

一般來說,pip 預設應該都安裝了 setuptools 和 wheel。如果沒有安裝,則安裝之:

pip install setuptools wheel -i https://pypi.douban.com/simple

如果安裝需要更新,則更新之:

pip install --upgrade setuptools wheel -i https://pypi.douban.com/simple

安裝好最新版本後,在 setup.py 所在目錄下輸入:

python setup.py sdist bdist_wheel

這個命令會在生成一個 dist 目錄,裡面有兩個檔案:

dist/
 example_pkg_your_username-0.0.1-py3-none-any.whl
 example_pkg_your_username-0.0.1.tar.gz

tar.gz 是原始檔存檔,whl 是構建的釋出版本。

上傳發布版本

安裝 twine:

pip install twine -i https://pypi.douban.com/simple

安裝好之後,執行 twine 命令(這裡,需要注意你已經註冊了 PyPI 的賬號):

twine upload dist/*
Enter your username: heyulong 
Enter your password: 
Uploading distributions to https://upload.pypi.org/legacy/
Uploading example_pkg_heyulong-0.0.1-py3-none-any.whl
100%|██████████████████████████████████████| 5.49k/5.49k [00:01<00:00,4.66kB/s]
Uploading example-pkg-heyulong-0.0.1.tar.gz
100%|██████████████████████████████████████| 4.23k/4.23k [00:01<00:00,2.21kB/s]

執行完之後,即可在 PyPI 官網上看到自己上傳的專案了。

安裝你上傳的 PyPI 專案,比如我的:

pip install example-pkg-heyulong

這裡簡單介紹了上傳 PyPI 專案的過程。更多細節請關注 PyPI 官網。

以上就是python 如何上傳包到pypi的詳細內容,更多關於python 上傳包到pypi的資料請關注我們其它相關文章!