Python項目打包發(fā)布到pypi

最近心血來潮,想把自己的寫的python項目打包到pypi,也讓廣大朋友能夠通過pip來安裝我的python包。
第一次嘗試,中間遇到了一些問題,記錄下來,方便其他感興趣的朋友。
項目組織架構(gòu)
# tree
.
├── LICENSE
├── pg_client
│?? ├── __init__.py
│?? └── pg_operator.py
├── README.md
└── setup.py
LICENSE:可以通過github創(chuàng)建項目的時候選擇,選擇“MIT License”,后面需要添加對應(yīng)的License版本
README.md:項目的介紹
setup.py:打包時用到的元數(shù)據(jù)信息
pg_client: 項目主要代碼目錄,名字可以根據(jù)項目需要定義
setup.py文件
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="pypostgrestool",
version="0.1",
author="zhangjx",
author_email="[email protected]",
description="SDK about postgres",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/ThinkBlue1991/pgpool",
packages=setuptools.find_packages(),
install_requires=['psycopg2==2.8.5'],
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
)
name?: 軟件包的名稱。該名稱由字母,數(shù)字,_和-組成。并且不能與其他已經(jīng)上傳至pypi.org的項目相同version: 軟件包的版本author: 作者author_email?: 作者郵箱地址description?:軟件包的描述信息long_description?: 軟件包的長描述信息url?:軟件包的主頁鏈接,常見的github路徑較多classifiers?:當(dāng)前軟件包的其他元數(shù)據(jù)信息(metadata)。例如兼容的python版本和操作系統(tǒng);提供的功能的類型及許可證等等。應(yīng)當(dāng)總是至少包括當(dāng)前軟件包所支持的python版本,操作系統(tǒng)和許可證信息packages?:包含在發(fā)布軟件包文件中的可被import的python包文件。我們可以手動羅列所有文件?;蛘呤褂煤瘮?shù)setuptools.find_packages()自動包含所有的python包文件以及子包文件install_requires:指定了當(dāng)前軟件包所依賴的其他python類庫。這些指定的python類庫將會在本package被安裝的時候一并被安裝
__init__.py文件
填寫import導(dǎo)入,這樣在安裝之后,就能夠直接通過import到自己的項目中使用,比如:
# cat pg_client/__init__.py
from pg_client.pg_operator importPostgresDB
安裝完成之后,通過 frompg_clientimportPostgresDB來使用 PostgresDB這個類對象
打包
安裝打包工具
pip3 install whell -y
pip3 install twine -y
打包
python3 setup.py sdist bdist_wheel
輸出結(jié)果
# tree
.
├── build
│?? ├── bdist.linux-x86_64
│?? └── lib
│?? └── pg_client
│?? ├── __init__.py
│?? └── pg_operator.py
├── dist
│?? ├── pypostgrestool-0.1-py3-none-any.whl
│?? └── pypostgrestool-0.1.tar.gz
├── LICENSE
├── pg_client
│?? ├── __init__.py
│?? └── pg_operator.py
├── pypostgrestool.egg-info
│?? ├── dependency_links.txt
│?? ├── PKG-INFO
│?? ├── SOURCES.txt
│?? └── top_level.txt
├── README.md
└── setup.py
dist下的文件是需要上傳到pypi下的
上傳pypi
注冊
通過pypi注冊頁面進行pypi用戶注冊
上傳
# twine upload dist/*
Uploading distributions to https://upload.pypi.org/legacy/
Enter your username:
輸入用戶名和密碼就能夠上傳到pypi下。
登陸到pypi查看自己的項目
- End -
由于微信平臺算法改版,公號內(nèi)容將不再以時間排序展示,如果大家想第一時間看到我們的推送,強烈建議星標我們和給我們多點點【在看】。星標具體步驟為:
(1)點擊頁面最上方“小詹學(xué)Python”,進入公眾號主頁。
(2)點擊右上角的小點點,在彈出頁面點擊“設(shè)為星標”,就可以啦。
感謝支持,比心。
