python 包和模块 发布库

官方文档

环境准备

  • setuptools
  • pip
  • wheel
  • twine

发布前准备

创建一个项目:

  • 项目名称
  • 包名称
    • __init__.py
    • 模块
  • setup.py
  • README.rst
  • LICENSE.txt
  • MANIFESY.in

命名建议

  • 全部小写
  • 多个单词以中划线作为分割,不要使用下划线(_)pip对下划线支持不是很好
  • 不能和pypi上已有的包名重复

setup.py

作用:项目信息的配置文件,最重要的就是执行一个setup函数,通过这个函数来指明信息

实例

from distutils.core import setup
setup(形参1 = 实参1, 形参2 = 实参2)

建议使用:

from setuptools import setup
setup(形参1 = 实参1, 形参2 = 实参2)

参数说明:
名称 name
name = 'sz-lib‘

版本 version
version = ‘1.0.0’

描述信息 description
description = ’this is a very niubi lib‘

需要处理的包列表 packages
packages = [‘szlib’]

需要处理的单文件模块列表 py_modules
py_modules = [‘single_module’]

作者 author
author = ‘sz’

作者邮箱 author_email
author_email = ‘xxx@qq.com’

长描述 long_description, 会显示在pypi的项目介绍中
long_description = ‘描述’

依赖的其他包 install_requires
install_requires = [‘requests>2.18’]

python 版本限制 python_requires
python_requires=’>=3’

项目主页地址 url
url = ‘https://’

协议 license
license = ‘MIT’

具体setup.py 脚本文档: Packaging Python Projects

README.rst

rst: reStructuredText
重新构建的文本
作用:
可以使用特定的字符,来描述文本的格式
pypi平台能够自动识别long_description字段中所写的这种格式的字符串,但是如果把这些字符串都写在一个单独的README.rst文件中,然后在setup.py文件中,读取这个文件内容,并赋值给long_description

语法说明

语法检测
有时会发现,写的rst文件,无法在Pypi平台正常显示,pypi上对于rst的解析器并不是sphinx,导致部分语法有一些差异
解决方法,先从本地对long_description进行验证,之后再上传

pip install readme_renderer
python setup.py check -r -s

产生html:

python C:\Users\wqr57\appdata\local\programs\python\Python37\Scripts\rst2html.py .\README.rst a.html

LICENSE.txt

作用:声明库的一些使用责任等等,比如所有权归属,别人是否可以对代码进行任何操作,是否可以用于其他商业用途等等
choosealicense

MANIFEST.in

用于声明需要打包的文件,如,LICENSE.txt
setuptools 打包会自动添加README.rst, distutils则不会,需要再MANIFEST.in中添加

include LICENSE.txt
include README.rst

Specifying the files to distribute

编译生成发布包

查看帮助:

py .\setup.py --help-commands

生成源码压缩包,包含setup.py,模块源文件,数据源文件等,可以使用在任何平台上重新编译所有内容
–formats=压缩格式1,压缩格式2

python .\setup.py sdist
python .\setup.py sdist --formats=zip,tar

bdist 生成二进制发行包,不包含setup.py,是某个特定平台和python版本的一个存档

python .\setup.py bdist
python .\setup.py bdist_egg
生成egg包,需要安装setuptools
python .\setup.py bdist_wheel
生成wheel包,需要安装wheel
python .\setup.py bdist_wininst
生成exe

上传包到pypi

需要提前安装 twine

twine upload dist/sztestlib-1.0.0.zip
twine upload dist/sztestlib-1.0.0.whl

区分模块的测试与发布状态

借助 __name__ 来区分py文件被执行的模式
py直接被执行,此值为 __main__
被当作模块来执行,此值为模块名称

# py文件的入口
if __name__ == '__mian__':
	在此py 中可被执行,其他import 则不会被执行

包的入口为 __main__.py

python 包名称
# 则会执行模块中的__main__.py
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值