如果你寫了一個python庫,想讓別人快速使用你的庫,最簡單的方式就是使用python官方出品的庫托管網站 "pypi" 了。 pypi的全稱是Python Package Index,是python的一個軟體倉庫。pypi可以 ...
如果你寫了一個python庫,想讓別人快速使用你的庫,最簡單的方式就是使用python官方出品的庫托管網站pypi了。
pypi的全稱是Python Package Index,是python的一個軟體倉庫。pypi可以幫助你找到和安裝由社區開發和共用的python庫。包的作者可以使用pypi來分發和共用其所開發的python庫。如下圖1是pypi的首頁,可以看到pypi已經擁有近30w的用戶以及超過16w的項目。
1.一般來說,你發佈的庫中需要有一個setup.py文件,該文件主要包括庫的各種信息,比如描述,作者,依賴以及各個模塊等等。setup.py的編寫可以參考如下資料:
如果你的python項目比較複雜,包含了多個層級的複雜的模塊,你可以參考下麵的blog來編寫setup.py的packages選項
附個人項目NetCloud的setup.py示例:
#!/usr/bin/env python
# coding=utf-8
from setuptools import setup
setup(
name="NetCloud",
version="1.0.2",
description='''網易雲音樂綜合爬蟲,可以實現:
1.對於網易雲音樂評論以及用戶信息的爬取,並且可視化展示;
2.支持模擬登錄,提供包括音樂,歌手,歌單,dj等全方位的api支持''',
author='lyrichu',
author_email='[email protected]',
url = "http://www.github.com/Lyrichu/NetCloud",
maintainer='lyrichu',
maintainer_email='[email protected]',
packages=['netcloud.analyse','netcloud.crawler',
'netcloud.login','netcloud.util',
'netcloud.demo','netcloud.test'],
package_data={'netcloud.util': ['source/*']},
install_requires=[
'pycrypto',
'requests',
'pyecharts',
'pandas',
'jieba',
'wordcloud',
'scipy'
]
)
上面編寫的setup.py中尤其需要註意的是packages和package_data兩個參數,這兩個參數分別決定了python庫模塊的結構以及資源文件的打包。
2.編寫好了setup.py文件之後,可以使用
python setup.py install
命令將pyhton庫安裝到本地,但是如果需要將庫上傳到pypi進行托管的話,則需要將庫代碼以及資源文件進行統一打包,打包一般有多種打包格式,常見的有源碼包(.tar.gz文件)和預編譯跨平臺包(.whl文件),源碼包以及預編譯包的打包命令如下:
# 源碼包,這會得到一個.tar.gz的文件
python setup.py sdist build
# 預編譯包,這會得到一個.whl的文件
python setup.py bdist_wheel --universal
3.上傳到pypi
在你上傳打包文件到pypi之前,你應該先去註冊一個pypi的賬號。這個很簡單,直接去官網註冊就可以了。上傳到pypi有兩種方式:
- 使用setuptools工具,具體命令如下:
# 上傳源碼包
python setup.py sdist upload
# 上傳預編譯包
python setup.py bdist_wheel upload
使用twine工具
簡單來說,相比setuptools,twine是一個更加安全和強大的pypi包發佈工具,具體介紹和用法可以參考官方文檔。
twine 上傳到pypi的命令如下:
# 首先安裝twine
sudo pip install twine
# 上傳打包好的文件到pypi
twine upload dist/*
twine上傳的過程中會提示你輸入pypi的用戶名和密碼,直接按照提示輸入即可。正常情況下你就可以成功發佈你的pyhton庫了。
發佈完成之後,你就可以使用pip命令安裝你自己的庫了,你可以試著安裝並測試一下你的庫在本機是否可以正常工作。