编程笔记9-编写python包并发布到pypi

pypi 账号注册

  1. 注册

https://pypi.org/account/register

  1. 添加API tokens
    目前安全要求,上传包不允许直接使用账号密码(以前是可以的,网上大部分教程也是直接使用账号密码上传)
添加API tokens

制作python包

做个简单的python库,里面有四个文件,分别是setup.pymypackage/__init__.pymypackage/mypackage.pyREADME.md

  1. setup.py
    setup.py 是库的重点,里面详细描述库的信息,setuptools根据setup.py将库打包。

示例:

import os
from setuptools import setup
from setuptools import find_packages

with open(os.path.join(os.path.dirname(__file__), 'README.md')) as readme:
    README = readme.read()

VERSION = '0.1.1'

setup(
    name='mypackage',  # package name
    version=VERSION,  # package version
    description='mypackage description',
    author='wwdeng',
    author_email='xx@gmail.com',
    install_requires=['episcanpy==0.3.1','scanpy'],
    long_description=README,
    long_description_content_type='text/markdown',
    package_data={'': ['data/*']},    # 包的自带数据
    classifiers=[
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python :: 3.10',
        'Programming Language :: Python :: 3.9',
        'Programming Language :: Python :: 3.8',
    ],
    packages=find_packages(),
    }
)

说明:

  • version:这个简单,就是包的发布的版本,可以直接写在这,也可以从其他地方引用过来。
  • long_description:必须是rst(reStructuredText )格式的,因为这个里面的内容是显示在pypi包首页上,我的long_description是同目录下的README.rst的内容,同时这个README也是我的github项目首页。
  • packages:申明你的包里面要包含的目录,比如 ['mypackage', 'mypackage_test'] 可以是这种使用我的示例,让setuptools自动决定要包含哪些包
  • install_requires:申明依赖包,安装包时pip会自动安装:格式如下(我上面的setup.py没有这个参数,因为我不依赖第三方包:)):

【推荐】大名鼎鼎的requests库的作者大神kennethreitz为大家准备了一个仓库作为一个setup.py的很好的模板:https://github.com/kennethreitz/setup.py

  1. mypackage/__init__.py

__init__.py表明mypackage是个包

name="mypackage"
  1. mypackage/mypackage.py
    mypackage/mypackage.py仅为一个示例,实际中所有包里面的函数都可以放在mypackage文件夹下
  1. README.md

README.md 用于描述这个库,在setup.py做为长描述使用


打包上传

  1. 安装必要的打包工具库
pip install setuptools wheel twine

setuptools 是打包工具, 是 distutils 增强版,不包括在标准库中。其扩展了很多功能,能够帮助开发者更好的创建和分发 Python 包。大部分 Python 用户都会使用更先进的 setuptools 模块。

wheel 库安装后可以打包成whl的包。Egg 格式是由 setuptools 在 2004 年引入,而 Wheel 格式是由 PEP427 在 2012 年定义。Wheel 的出现是为了替代 Egg,它的本质是一个zip包,其现在被认为是 Python 的二进制包的标准格式。

  1. 将编写的库安装测试一下是否正常
python setup.py develop
  1. 打包
# 在当前目录的dist文件夹下,生成一个以tar.gz结尾的包
python setup.py sdist build

# 在dist文件夹下生成一个whl格式的包
python setup.py bdist_wheel --universal
  1. 上传

twine 用于上传包到pypi

twine upload dist/*

参考

https://blog.csdn.net/dreamblog/article/details/132659002
https://codeantenna.com/a/uEd3D2itku
https://github.com/kennethreitz/setup.py/blob/master/setup.py

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容