>记录生活, 工作的点点滴滴...

Python制作安装自定义包及发布

一. 目录结构

|--pkgname
|----|--__init__.py
|----|--module1.py
|----|--module2.py
|----|--subpkgname
|----|----|--__init__.py
|----|----|--module3.py
|--setup.py

二. 文件解析  

pkgname为目录名, 亦即包名, 该目录下有__init__.py, module1.py, module2.py文件及subpkgname目录,  
subpkgname目录下有__init__.py, module3.py文件及subpkgname目录.
pkgname同级目录下有setup.py文件.
__init__.py中可以控制当前包都有哪些模块可以导出,在__init__.py中添加“__all__ = ['module1','module2']”
__init__.py可以为空.
module文件内可为函数, 类等平常使用的方法, 不多作解释. 

setup.py文件内容基本如下:  

from setuptools import setup

requires = [] #依赖包, 如有

setup(name="bunshinn", #包名
version="18.8.30",
install_requires=requires,
description="test to install module",
author="bunshinn",
author_email = "412319433@qq.com",
url = "https://github.com/bunshinn/bstools",
py_modules=['pkgname.module1','pkgname.module2',], #要引入的模块
packages=['pkgname.subpkgname'], #要引入的包
)


三. 制作与安装

进入该目录下
python setup.py build #生成包文件
python setup.py sdist #生成压缩包
a. 将压缩包解压后, 进入主目录, 内有setup.py文件
执行 python setup.py install
完成包安装.

b.使用pip安装

pip install path_to_dist_package,

若出现 cannot uninstall a distutils installed project'错误提示, 需对pip加参数如下:

pip install --ignore-installed D:\packages\packagename.tar.gz

四. 发布至pypi
a. 准备工作: 注册pypi帐户
b. 安装twine: pip install twine
c. 环境变量: path/to/python/scripts设为环境变量(pip同目录, 若已设, 忽略之)
d. 在第三步基础上, 运行twine upload dist/* , 输入帐号密码, 如有报错, 刚已上传成功, 可通过 pip pkgname直接安装
e. HTTPError: 403 Client Error: The credential associated with user 'bunshinn' isn't allowed to upload to project 'bstools'. See https://pypi.org/help/#project-name for more information. for url: https://upload.pypi.org/legacy/, 若出现类似错误, 模块命已被占用,可更换模块名重试

五. pip安装缓慢
可指定源进行安装:
pip install -i http://pypi.douban.com/simple --trusted-host pypi.douban.com pkgname


发表于:2018-08-30 10:39:43浏览(616) 评论(0) Python