Python 包的發布


發布Python包

上一篇介紹了如何使用別人的輪子,現在我們討論下如何自己造輪子給別人用。

作為一個流行的開源開發項目,Python擁有一個活躍的貢獻者和用戶支持社區,這些社區也可以讓他們的軟件可供其他Python開發人員在開源許可條款下使用。這允許Python用戶有效地共享和協作,從其他人已經創建的解決方案中受益於常見(有時甚至是罕見的)問題,以及可以提供他們自己的解決方案。

Pypi( Python Package Index) ,公共的模塊存儲中心

准備

distutils

官方庫distutils,使用安裝腳本setup.py來構建,安裝包。2000年停止開發

setuptools

它是替代distutils 的增強版工具集,包含easy_install 工具,使用ez_setup.py文件,支持egg格式的構建和安裝,提供查找,下載安裝構建,發布,管理等包管理功能。setuptools是包管理的核心模塊。

pip

目前包管理的事實標准,構建在setuptools之上,替代easy_install的,同樣提供豐富的包管理功能、從Python3.4 開始之間包好在安裝文件中。

wheel(輪子)

就光這個名字都如雷貫耳!有沒有~

wheel格式定義在PEP427中wheel文件中不包含.pyc 文件提供bdist_wheel 作為seetuptools的擴展命令,這個命令可以用來生成新打包格式wheelpip 從1.4版本開始 提供了一個wheel子命令來安裝wheel包,當然,需要先安裝wheel模塊。它可以讓Python庫以二進制形式安裝,而不需要本地編譯。

安裝

python -m pip install setuptools wheel twine

至於為什么是Python -m pip 而不是 pip 可參看我的這篇blogpython -m pip

使用setup.py打包

下面 是 verify-python 項目的setup.py文件。

#!/usr/bin/env python3
# _*_ coding: utf-8 _*_
__author__ = "monkey"

from setuptools import setup, find_packages

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

setup(name='verify-python',
      version='0.0.2',   # 版本號
      description='An elegant verification code generator.',  # 包的介紹
      author='BlackMonkey',  # 作者 就是我啦~ 
      author_email='3213322480@qq.com',  # 你的郵箱
      url='https://github.com/blackmonkey121/verify',  # 項目地址,一般的填git地址 也可以是任意可用的url 不過我喜歡使用 git
      packages=find_packages(),  # Python導入包的列表,我們使用find_packages() 來自動收集
      long_description=long_description,  # 項目的描述 一般是 string 上文中定義了它
      long_description_content_type="text/markdown",   # 描述文檔 README 的格式 一般我喜歡MD. 也可以是你喜歡的其他格式 支不支持我就不知道了~ 估計HTML 是支持的
      license="GPLv3",   # 開源協議
			# 這 需要去官網查,在下邊提供了許可證連接 或者 你可以直接把我的粘貼走
      classifiers=[
          "Programming Language :: Python :: 3", 
          "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
          "Operating System :: OS Independent"],

      python_requires='>=3.3',   # Python 的版本約束
			# 其他依賴的約束
      install_requires=[
          "itsdangerous>=1.1.0",
          "numpy>=1.11.3",
          "opencv-python>=3.4",
          "Pillow>=7.0",
          "rsa>=4.0", ]
      )

許可證獲取

創建分發

# 生成分發文件
python setup.py sdist bdist_wheel

如圖在dist 下 存在兩個文件

verify-python-0.0.2.tar.gz   # 源碼歸檔文件
verify_python-0.0.2-py3-none-any.whl  # 內置的發行版文件

tar.gz文件是源歸檔,.whl文件是 內置發行版。較新的pip版本優先安裝內置發行版,但如果需要,將回落到源歸檔文件中。您應該始終上傳源檔案,並為項目兼容的平台提供內置檔案。在這種情況下,我們的示例包在任何平台上都與Python兼容,因此僅需要一個內置發行版。

*.egg-info

應該是用來記錄整個包的依賴和文件關系以及一些其他屬性的東西,沒有不影響包的使用,通常會在打包時生成。

分發

上傳到Pypi 服務器上,可以是公有的Pypi服務器,也可以是公司或組織內私有的。
如果需要上傳到公有服務器,需要注冊賬號注冊

# 加密的上傳
python3 -m twine upload dist/*


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM