博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在 PyPI 上发布 python 包
阅读量:4100 次
发布时间:2019-05-25

本文共 3361 字,大约阅读时间需要 11 分钟。

PyPI(Python Package Index)是 Python 官方的包存储仓库。PyPI 推荐使用 pip(python install packages,Python 包管理工具)来下载储存在 PyPI 库中的 python 包。本文内容主要介绍如何在 PyPI 上发布自己编写的 python 包。

参考链接:

自己编写好的 python 项目存放在 /home/cropgbm_python/cropgbm/ 文件夹下,希望将 cropgbm/ 打包并上传至 PyPI 中。

在这里插入图片描述

1. 创建 __init__.py 文件

首先在 /home/cropgbm_python/cropgbm/ 目录下创建 __init__.py 空文件

在这里插入图片描述

2. 创建 MEADME.md 文件

/home/cropgbm_python/ 目录下创建 MEADME.md 文件。这里的 MEADME.md 复制于 Readmd.md,仅更改了文件名。

注意!文件名必须是 [README, README.rst, README.txt, README.md] 中一种,否则在打包时会出现警告:

warning: sdist: standard file not found: should have one of README, README.rst, README.txt, README.md

3. 创建 setup.py 文件

/home/cropgbm_python/ 目录下创建 setup.py 文件。setup.py 指定包的相关信息(如名称、版本、依赖等)以及所要包括的代码文件。

setup.py 文件的一般格式如下。

from setuptools import setup, find_packagessetup(    name='cropgbm',    version='1.1.1',    description=(    	'Crop Genomic Breeding machine (CropGBM) is a multifunctional program     	 that integrates data preprocessing, population structure analysis, SNP selection,     	 phenotype prediction, and data visualization.'    	 ),    long_description=open('README.md').read(),    author='Yuetong Xu, Jun Yan',    author_email='yuetong_xu@163.com',    maintainer='Yuetong Xu',    maintainer_email='yuetong_xu@163.com',    license='MIT License',    url='https://github.com/YuetongXU/CropGBM',    packages=find_packages(),    entry_points={    'console_scripts': [        'cropgbm = cropgbm.main:main',        ]    },    package_data={        'cropgbm': ['testdata/*']    },    classifiers=[        'Operating System :: OS Independent',        'License :: OSI Approved :: MIT License',        'Programming Language :: Python :: 3'    ],    python_requires='>=3',    install_requires=[        'wheel',		'numpy',		'scipy',		'pandas',		'scikit-learn>=0.24',		'lightgbm',		'matplotlib',		'seaborn'    ])
  • name - 包的名字
  • version - 包的发布版本号
  • description - 包的简要描述
  • long_description - 包的详细描述,内容会展示在 PyPI 的包首页上。这里使用的是 README.md 文件,此文件也是我 github 中 cropgbm 项目的 README.md。
  • url - 包主页的 URL,内容会展示在 PyPI 的包首页上。一般 URL 为 GitHub 等的代码托管服务的链接。
  • packages - 包的代码所在目录。这里使用 find_packages() 函数,将包含 __init__.py 文件的目录作为要打包的代码。如本例会将 /home/cropgbm_python/cropgbm/ 文件夹进行打包。
  • package_data - 包的非 .py 文件所在目录。由于 find_packages() 函数仅会打包目录下的 .py 文件,如果需要在包中加入非 .py 文件,可以通过该参数指明路径。
  • entry_points - 为包添加命令行工具。 ‘cropgbm = cropgbm.main:main’ 指 python 包安装时会在 /usr/local/bin/ 路径下创建一个名为 cropgbm 的文件,此文件链接的是 cropgbm 包中 main.py 脚本中的 main 函数( “:” 指明是文件中的函数)。
  • install_requires - 包的依赖,通过 pip 安装 cropgbm 包时会自动检测依赖是否满足,对于不满足的依赖则自动安装所需依赖。如果没有所需依赖,此参数可以省略。

若想添加更多信息,参见

4. 运行 setup.py 文件进行打包

MEADME.md 和 setup.py 文件创建好后,如图:

在这里插入图片描述

/home/cropgbm_python/ 目录下运行 setup.py 文件,进行打包

$ python setup.py sdist

打包完成后新生成 distcropgbm.egg-info 两个文件夹,其中 dist 文件夹下储存了压缩好的、可以上传至 PyPI 的 python 包。

在这里插入图片描述
在这里插入图片描述

5. 检测包安装是否符合预期

为了保证 python 包可以被其他用户正确安装,可以使用 python setup.py install 命令在本地安装 python 包。

$ python setup.py install

install 包括两步:python setup.py build, python setup.py install

这两步可分开执行, 也可只执行 install, 因为 install 总是会先 build 后 install.

install 完成后会在 /usr/local/lib/python3.6/dist-packages/ 路径下生成文件 cropgbm-1.1.1-py3.6.egg,在 /usr/local/bin/ 路径下生成文件 cropgbm 。

在这里插入图片描述

在这里插入图片描述

install 完成后可以在本地命令行通过调用 cropgbm 来运行 cropgbm 包:

$ cropgbm -h

参考链接

6. 将包上传至 PyPI

  1. 在 PyPI()上注册账户。

  2. 安装上传所需的包 twine

    $ pip install --user --upgrade twine
  3. 利用 twine 将 cropgbm-1.1.tar.gz 上传至 PyPI,期间会让你输入注册的用户名和密码

    $ twine upload dist/*

7. 在 PyPI 上查看 cropgbm 包的信息

上传完成后可以在 PyPI 的网站上看到 cropgbm 包的信息。

在这里插入图片描述

转载地址:http://akksi.baihongyu.com/

你可能感兴趣的文章
链表各类操作详解
查看>>
C++实现 简单 单链表
查看>>
数据结构之单链表——C++模板类实现
查看>>
Linux的SOCKET编程 简单演示
查看>>
正则匹配函数
查看>>
Linux并发服务器编程之多线程并发服务器
查看>>
聊聊gcc参数中的-I, -L和-l
查看>>
[C++基础]034_C++模板编程里的主版本模板类、全特化、偏特化(C++ Type Traits)
查看>>
C语言内存检测
查看>>
Linux epoll模型
查看>>
Linux select TCP并发服务器与客户端编程
查看>>
Linux系统编程——线程池
查看>>
基于Visual C++2013拆解世界五百强面试题--题5-自己实现strstr
查看>>
Linux 线程信号量同步
查看>>
C++静态成员函数访问非静态成员的几种方法
查看>>
类中的静态成员函数访问非静态成员变量
查看>>
C++学习之普通函数指针与成员函数指针
查看>>
C++的静态成员函数指针
查看>>
Linux系统编程——线程池
查看>>
yfan.qiu linux硬链接与软链接
查看>>