包python Python 包的發布

2021-10-11 00:03:39 字數 2447 閱讀 9121

發布python包

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

pypi( python package index) ,公共的模組儲存中心

準備distutils

官方庫distutils,使用安裝指令碼setup.py來構建,安裝包。2023年停止開發

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='[email protected]', # 你的郵箱

url='', # 專案位址,一般的填git位址 也可以是任意可用的url 不過我喜歡使用 git

packages=find_packages(), # python匯入包的列表,我們使用find_packages() 來自動收集

long_description=long_description, # 專案的描述 一般是 string 上文中定義了它

license="gplv3", # 開源協議

# 這 需要去官網查,在下邊提供了許可證連線 或者 你可以直接把我的貼上走

classifiers=[

"programming language :: python :: 3",

"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", ]

建立分發

# 生成分發檔案

如圖在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/*

包python python之各種包

因為需要解決不同的需求,所以,python準備了豐富的模組.只要匯入就可以使用,簡潔高效.collection模組 具名元組 namedtuple 可以給指定位置傳參,一一賦值後,可以單獨呼叫.可以運用於儲存座標位置 佇列 queue 先進先去 雙端佇列 有序字典 orderdict 記住了字典元素...

python python必學的五個包

numpy為python提供了快速的多為陣列處理的能力 也包括矩陣操作的能力,但是並不常用 學習資料 利用python進行資料分析 scipy是在numpy基礎上新增了眾多的科學計算工具包,包含了線性代數 常微分方程數值求解 訊號處理 影象處理 稀疏矩陣等等.可以說,numpy和scipy的有機結合...

巢狀python Python中包如何巢狀

init py檔案 init py控制著包匯入行為。init py為空,意味著僅僅把這個包匯入,不會匯入包中的模組。在 init py檔案中,定義乙個 all 變數,它控制著from包名import 是匯入的模組。可以在 init py檔案中編寫內容,當匯入時,這些語句就會被執行。init py模組...