在Pypi上发布自己的Python包

使用过Python编程都知道, Python安装都是可以使用pip安装搞定:

sudo pip install <package name>

那么如何发布一个自己的pypi Python包呢.
首先安装一个setuptools

sudo pip install setuptools

  1. 第一步, 就是到pypi上注册自己的用户, 点击"Register", 填写自己的用户名, 密码, 邮件地
  2. 第二步, 准备 setup.py/setup.conf 文件, 它是放在你的包的根目录的, 这一步直观重要, 包括要发布的包的名字, 版本, license, 描述, 特性(classifier)等等, 下面是我自己包的一个setup.py文件的内容, 基本上只需要在这个上面修改就可以了, 具体如下:
#!/usr/bin/env python
# coding=utf-8

from setuptools import setup, 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='<项目的网址,我一般都是github的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的语法可以参考: 点我, 我的long_description 是同目录下的README.rst 的内容, 同事这个README也是我的github项目首页.
  • packages - 申明你的包里面要包含的目录, 比如[‘mypackage’, ‘mypackage_test’] 可以是这种使用我的示例, 让setuptools自动决定要包含那些包
  • install_requires - 申明依赖包, 安装包时pip会自动安装: 格式如下
    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',
    ]
  1. 装备requirements.txt 和 test-requirements.txt, 这个申明包的依赖包和跑自动化测试的测试依赖包, 具体格式示例如下:
mock>=2.0.0
flake8>=3.2.1
eventlet>=0.19.0
nose2>=0.6.5
cov_core>=1.15.0
virtualenv>=15.1.0

test-requiremtns.txt的格式和上面的格式一样.
有了它们, 就可以自己手动安装依赖包了

pip install -r requirements.txt
有了它们, 结合tox等工具, 可以非常方便的加入自动化测试.

  1. 准备一个项目的README.rst文件, 前面也提到了它的格式要求, 第一次发包, 可以直接copy别人的格式, 这种东西熟能生巧, 多写几次就会了.
  2. 准备好上面的步骤, 一个包就基本完整了, 剩下的就是打包了(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 install twine
twine upload dist/*
提示你输入前面注册的账户和密码, 上传成功就搞定了, 就可以使用pip 在任何地方安装了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值