pypi.python.org_在Pypi上发布自己的Python包
使用Python編程的都知道,Python的包安裝非常的方便,一般都是可以pip來安裝搞定:
sudo pip install
最近因為項目上的需要,發布了一個自己的pypi Python包,這里我大致分享如何發布自己的Pypi包一般過程。
打包工作主要依賴python的一個叫setuptools的包來完成,在進行下面操作前請使用pip安裝它:
sudo pip install setuptools
(這里面我都是假設你已經準備好你的代碼,測試代碼以及目錄結構,加上我今天要分享的,就可以組成一個完整的python包)
1. 第一步,就是到pypi(https://pypi.python.org/pypi)上注冊自己的用戶, 點擊“Register”,填寫自己的用戶名,密碼,郵件地址后,就成功了。
記住自己的用戶名和密碼,后面上傳的時候要輸入的
2. 準備setup.py/setup.conf文件,它是放在你包的根目錄的,這一步至關重要,包括要發布的包名字,版本,license,描述,特性(classifier)等等,下面是我自己包的一個setup.py文件的內容,基本上只需要在這個上面修改就行了,具體如下:
#!/usr/bin/env python#coding=utf-8
from setuptools importsetup, find_packages
setup(
name='',
version=,
description=(''),
long_description=open('README.rst').read(),
author='',
author_email='',
maintainer='',
maintainer_email='
license='BSD License',
packages=find_packages(),
platforms=["all"],
url='',
classifiers=['Development Status :: 4 - Beta','Operating System :: OS Independent','Intended Audience :: Developers','License :: OSI Approved :: BSD License','Programming Language :: Python','Programming Language :: Python :: Implementation','Programming Language :: Python :: 2','Programming Language :: Python :: 2.7','Programming Language :: Python :: 3','Programming Language :: Python :: 3.4','Programming Language :: Python :: 3.5','Programming Language :: Python :: 3.6','Topic :: Software Development :: Libraries'],
)
需要注意的上面的字段:
version - 這個簡單,就是包的發布的版本,可以直接寫在這,也可以從其他地方引用過來。
long_description - 必須是rst(reStructuredText )格式的,因為這個里面的內容是顯示在pypi包首頁上,具體rst的語法可以參考:http://rest-sphinx-memo.readthedocs.io/en/latest/ReST.html
我的long_description是同目錄下的README.rst的內容,同時這個README也是我的github項目首頁。
packages - 申明你的包里面要包含的目錄,比如 ?['mypackage', 'mypackage_test']可以是這種使用我的示例,讓setuptools自動決定要包含哪些包
install_requires - 申明依賴包,安裝包時pip會自動安裝:格式如下(我上面的setup.py沒有這個參數,因為我不依賴第三方包:)):
install_requires=['Twisted>=13.1.0','w3lib>=1.17.0','queuelib','lxml','pyOpenSSL','cssselect>=0.9','six>=1.5.2','parsel>=1.1','PyDispatcher>=2.0.5','service_identity',
]
3. 準備requirements.txt 和 test-requirements.txt,這個申明包的依賴包和跑自動化測試的測試依賴包,具體格式示例如下:
mock>=2.0.0
flake8>=3.2.1eventlet>=0.19.0
nose2>=0.6.5cov_core>=1.15.0
virtualenv>=15.1.0
以上是我的test-requirements.txt的內容,requirements.txt的格式個上面一樣。
準備這個兩個文件不是必須的。
但是,有了它們,用戶可以自己手動安裝依賴包
pip install -r requirements.txt
有了它們,結合tox等工具,可以非常方便的加入自動化測試。
4. 準備一個項目的README.rst文件,前面也提到了它的格式要求,第一次發包,可以直接copy別人的格式,這東西熟能生巧,多寫就會了。
5. 準備好上面的步驟,一個包就基本完整了,剩下的就是打包了(cd到包的根目錄):
可以使用下面命令打包一個源代碼的包:
python setup.py sdist build
這樣在當前目錄的dist文件夾下,就會多出一個以tar.gz結尾的包了:
也可以打包一個wheels格式的包,使用下面的命令搞定:
python setup.py bdist_wheel --universal
這樣會在dist文件夾下生成一個whl文件,
6. 上傳生成的包,可以使用setuptools,或者twine上傳,推薦使用twine上次,因為使用setuptools上傳時,你的用戶名和密碼是明文或者未加密傳輸,安全起見還是使用twine吧
# 上傳source 包
python setup.py sdist upload
# 上傳pre-compiled包
python setup.py bdist_wheel upload
使用twine上傳,先安裝twine
sudo pip installtwine
twine upload dist/*
上次前都會提示你前面注冊的用戶名和密碼。一切搞定,你的包現在可以通過pip在任何地方安裝了。
后續
其實對于一個包,你要長久維護,自動測試肯定要加入,后面有時間再分享下如何使用tox的使用和與第三方CI的集成。
引用鏈接:
pypi詳細教程:?https://packaging.python.org/distributing
總結
以上是生活随笔為你收集整理的pypi.python.org_在Pypi上发布自己的Python包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记录一种多个按钮中每次只能选中一个的实现
- 下一篇: 用python编excel统计表_Pyt