Python 快速打包发布软件PyPi上

2018/08/06 Python

PyPi是一个python包的仓库,就如 R 的CRAN和 perl 的CPAN一样,里面有很多别人打包发布的python包,你可以通过easy_install或者pip进行安装,方便用户更方面的使用你的代码模块。 本文记录了如何创建自己的 Python 包,以及打包发布到PyPi上。

首先安装打包必要的工具

  • 打包必须依赖工具
sudo pip install setuptools
  • 方便上传工具
sudo pip install twine

PyPi官网注册一个PyPi个人账户如下

PyPi

账户和密码本地配置

可以配置到$HOME/.pypirc文件中,就不用多次输入了

[pypi]
username = <username>
password = <password>

配置本地打包配置文件setup.py

from setuptools import setup, find_packages

from version.version import VERSION

GFICLEE_VERSION = VERSION

setup(
    name='GFICLEE',
    version=GFICLEE_VERSION,
    packages=find_packages(),
    entry_points={
        "console_scripts": ['GFICLEE = predict.main:main']
    },
    install_requires=[
        "numpy==1.14.3",
        "pandas==0.22.0",
    ],
    url='https://github.com/yangfangs/GFICLEE',
    license='GNU General Public License v3.0',
    author='Yang Fang',
    author_email='yangfangscu@gmail.com',
    description='Gene function inferred by common loss evolution events'
)
  • 这些是打包必要的说明对应如下:
名称 说明
name 项目名称
version 项目版本
packages 项目包含的数据
entry_points 项目的主入口
install_requires 项目依赖包
url 项目地址
author 项目作者
author_email 作者邮箱
description 项目简要描述

注: 项目版本一般不直接写入setup.py中,一般另写其他Python脚本中然后导入,便于统一管理和发布新版本。 packages可以使用 find_packages()函数实习本项目内自动寻找。

打包

  • 打包前可以先check一下

python setup.py check

  • 执行打包命令

python setup.py sdist

打包完成会生成相应的文件保存在 dist/目录下 名为tar.gz结尾文件

发布Python 包

1.在Home新建一个隐藏文件名为.pypirc,写入PyPi账户以及密码信息,这样每次上传不需要再繁琐的输入用户名和密码了。

[distutils]
index-servers =
    pypi

[pypi]
username:your_username
password:your_password

2.本地测试

python setup.py install

3.注册包

  • 上传前需要注册一下包的名称,因为这个名称必须独一无二,如被占用则注册不通过。
python setup.py register

4.检测是否符合Pypi要求


twine check dist/**_.tar.gz

5.上传

twine upload dist/**_.tar.gz

完成上传你就可以在Pypi上看到你上传的包了。并且可以使用pip install安装你的包了。

使用markdown 格式的readme文件


from setuptools import setup

# read the contents of your README file
from os import path
this_directory = path.abspath(path.dirname(__file__))
with open(path.join(this_directory, 'README.md'), encoding='utf-8') as f:
    long_description = f.read()

setup(
    name='an_example_package',
    # other arguments omitted
    long_description=long_description,
    long_description_content_type='text/markdown'

)




  • 除非注明,本博文即为原创,转载请注明本博文链接地址
  • 本博文只用于分享和交流知识,不得转载商用或个人牟利
  • 如果您觉得文章对您有帮助,可以通过点击下面按钮分享

Search

    Post Directory