python打包到pypi小结
如果你写了一个python库,想让别人快速使用你的库,最简单的方式就是使用python官方出品的库托管网站pypi了。
pypi的全称是Python Package Index,是python的一个软件仓库。pypi可以帮助你找到和安装由社区开发和共享的python库。包的作者可以使用pypi来分发和共享其所开发的python库。如下图1是pypi的首页,可以看到pypi已经拥有近30w的用户以及超过16w的项目。

图1:pypi首页
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='lyrichu@foxmail.com',
url = "http://www.github.com/Lyrichu/NetCloud",
maintainer='lyrichu',
maintainer_email='lyrichu@foxmail.com',
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命令安装你自己的库了,你可以试着安装并测试一下你的库在本机是否可以正常工作。
python打包到pypi小结的更多相关文章
- 将自己写的Python代码打包放到PyPI上
如果是开源的Python代码,为了能够让大家更方便的使用,放到PyPI上也许是个非常不错的主意(PyPI:Python Package Index).刚开始我以为要将代码打包放到PyPI上是一件非常复 ...
- Python打包文件夹的方法小结(zip,tar,tar.gz等)
本文实例讲述了Python打包文件夹的方法.分享给大家供大家参考,具体如下: 一.zip ? 1 2 3 4 5 6 7 8 9 10 11 import os, zipfile #打包目录为zip文 ...
- Python包管理工具小结
此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 作为一名接触Python有一段时间的初学者,越来越体会到Python的方便之处,它使人能更 多的关注业务本身 ...
- Python 打包的现状:包的三种类型
英文 | The state of Python Packaging[1] 原作 | BERNAT GABOR 译者 | 豌豆花下猫 声明 :本文获得原作者授权翻译,转载请保留原文出处,请勿用于商业或 ...
- Python 打包——过去、现在与未来
英文 | Python packaging - Past, Present, Future[1] 原作 | BERNAT GABOR 译者 | 豌豆花下猫 声明 :本文获得原作者授权翻译,转载请保留原 ...
- Python 打包中 setpy.py settuptools pbr 的了解
背景 nova服务构建失败,报错: 'tests_require' must be a string or list of strings containing valid project/versi ...
- 上传python代码到pypi
上传python代码到pypi 去pypi官网注册账号 在项目中添加setup.py # coding = utf-8 from setuptools import setup, find_packa ...
- Python自然语言处理工具小结
Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...
- Python 打包和发布方法汇总
以下主要Python打包汇总,作为学习备份: 一.使用python内部基础工具包Distutils打包程序 1. 在打包之前需要做的就是配置好安装脚本,一般为setup.py文件: 示例(setup. ...
随机推荐
- vue使用resource传参数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [vue]v-bind: sytle/class-bind&属性值绑定
v-bind - style绑定 - class绑定 - 属性值绑定 <!DOCTYPE html> <html lang="en"> <head&g ...
- (转)ArrayList和LinkedList的几种循环遍历方式及性能对比分析
主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论. 通过本文你可以 ...
- Weka——PrincipalComponents分析
package weka.filters.unsupervised.attribute; PrincipalComponents 属性: /** The data to transform analy ...
- 深入理解php内核——读书笔记1
第一章 基础准备 宏定义 #字符串化 ##连接符 do{}while(0) 多行 全局宏: EG.PG 第二章 用户代码的执行 php请求的生命周期 SAPI接口 php脚本执行 第三章 变量及数据类 ...
- xhtml 的三种 doctype
{1}文档宣告 <!ODCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 [there]//EN" "http://www.w4org/TR/xhtml1/DTD/ ...
- Loadrunder场景设计篇——添加windows Resource计数器和指标说明
目的 监控要测试的windows服务器的资源使用情况 A.添加计数器步骤 1.添加视图,方法双击.拖动左侧的Windows Rescources到右边图形区,或右键右侧已有视图,Open a New ...
- Java设计模式应用——备忘录模式
备忘录模式主要用于存档.游戏中我们打boss前总会存档,如果打boss失败,则读取存档,重新挑战boss. 可以看出来,备忘录模式一般包括如下数据结构 1. 存档文件:用于恢复备份场景的必要数据: 2 ...
- R 简明教程
R 是一门统计语言.它有很多数据分析和挖掘程序包.可以用来统计.分析和制图. 你也可以在 LaTeX 文档中运行 R 命令. # 注释以 # 开始 # R 语言原生不支持 多行注释 # 但是你可以像这 ...
- 使用echo命令清空tomcat日志文件
使用echo命令清空日志文件echo -n "" > /server/tomcat/logs/catalina.out ==>要加上"-n"参数,默 ...