您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

教你在几分钟内构建一个Python包

时间:2020-09-09 12:52:24  来源:  作者:

构建包的过程有些复杂,但从长远来看是值得的,尤其是可以创建属于自己的Python/ target=_blank class=infotextkey>Python包。本文的目的是通过对构建一个新发行包的案例研究,让您了解需要构建什么以及如何构建python包的基础知识。

教你在几分钟内构建一个Python包

 

开始

首先,您肯定需要设置一个或多个内容,以便了解如何构建python包。因此,需要的东西的如下:

  • IDE (Vs Code)
  • Python 3

构建Python包

本文中构建的标称为b_dist。b_dist是一个分布包,它有Gaussian, Binomial, e.t.c等类。但首先,使用下面的映射结构创建包文件夹:

b_dist/
        __init__.py        Binomialdistribution.py        Guassiandistribution.py        Generaldistribution.py        licence.txt        setup.cfgREADME.mdsetup.py

首先,您必须为上面在映射中列出的那些创建一个空文件。注意:b_dist是一个文件夹,setup.py带有自述文件。md不在b_dist文件夹中。

让我们先谈谈b_dist里面的文件:

b_dist/__init__.py

这个文件告诉python这个文件夹包含一个包。另外,包总是由init文件组成,即使它是空的。当您在python程序中导入一个包时,剩余的__init__文件就会运行。在这种情况下,其他的__init__文件导入高斯、二项和分布模型,以便在使用包时直接导入这些类。

b_dist/Binomialdistribution.py

二项文件是用于计算和可视化二项分布的类。

b_dist/Guassiandistribution.py

高斯文件是用于计算和可视化高斯分布的类。

b_dist/Generaldistribution.py

通用分布文件是用于计算和可视化概率分布的类。

b_dist/licence.txt

许可证档案实际上载有你的版权资料,说明你打算准许其他使用者自由使用你的套件。

b_dist/setup.cfg

cfg文件是一个保存自述文件数据的文件。

README.md

这是包的文档。它描述了包是如何工作的

setup.py

py文件是pip安装包所必需的。此外,它还包含关于包的元数据。请注意以下属性,如名称和包。这个属性必须与文件夹名' b_dist '具有相同的值,以便在上传我们的包时避免bug。

 

本地运行包

让我们先通过输入下面的代码在本地运行包:

# change directory to where the setup file and the package is located
~$ cd python_package
~/python_package:$ 
# Install the package locally
# NOTE:pip install . installs any setup.py file in that directory.
~/python_package:$ pip install .

输入后应该是输出:

Processing /python_package
Building wheels for collected packages: b-dist
  Building wheel for b-dist (setup.py) ... done
  Created wheel for b-dist: filename=b_dist-0.4-py3-none-any.whl size=5108 sha256=d4c6f74daa1add07f37b01a74294e86ab07d655a6e0944bbb46ed6503ae493ef
  Stored in directory: /tmp/pip-ephem-wheel-cache-3pvdd9ue/wheels/1e/f9/a3/568195cccd4e2d1dcb1edaf9c2708f651b90b6af6fbdfd3f36
Successfully built b-dist

最后,我们的包已经安装好了。让我们通过输入下面的代码来测试它是否有效:

# open the python shell
In[1]: /python_package$ python
Out[1] Python 3.7.3 (default, Mar 27 2019, 22:11:17) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
In[2] >>>from b_dist import Guassian
In[3] >>> Guassian(10,5)Out[3] mean 10, standard deviation 5

太棒了! !,现在我们的包可以工作了,让我们继续进行下一个部分。

 

上传Python包

 

使用PyPI可以快速上传新构建的包。首先来看什么是PyPi。PyPi代表Python包索引(PyPi),它是Python编程语言的软件存储库。

所以现在要将我们的包上载到PyPI站点的测试版本,另外要确保pip安装过程是否正常,然后现在要上载到PyPI站点。

首先,用测试创建一个帐户。对两个站点使用相同的用户名和密码。

在成功创建两个帐户之后,让我们返回IDE并将包上传到TestPyPi。但首先,要与这些站点通信,您需要pip安装一个名为twine的库,使用:

pip install twine

所以,安装twine后,输入以下代码先上传到TestPyPi:

# Creating the distribution package to be uploaded
~/python_package:$ python setup.py sdist

输入代码后,您将看到两个新文件夹,然后移动到下一行代码:

# Upload the package created using twinw
~/python_package:$ twine upload --repository-url https://test.pypi.org/legacy/ dist/*
Output: Uploading distributions to https://test.pypi.org/legacy/
# enter your username and password used in registraion to the site
Output: Enter your username : bideen
Output: Enter your password : ########

输入密码后,你会看到一条成功的消息:“上传package_name 100%成功”。要检查上传是否成功,请访问您的TestPyPi帐户并查看您的新包。

现在使用以下代码从TestPyPi站点安装pip:

# first uninstall the previuos package on to aviod conflicts
~/python_package:$ pip uninstall b_dist
# install fro the TestPyPi
~/python_package:$ pip install --index-url https://test.pypi.org/simple/ b_dist

成功集成TestPyPi之后,现在让我们继续上载到主PyPi,在那里可以使用包名直接进行pip安装,也可以公开使用。

# first uninstall the previuos package on to aviod conflicts
~/python_package:$ pip uninstall b_dist
# install fro the TestPyPi
~/python_package:$ pip install b_dist

祝贺您,您已经成功地构建了一个python包。现在在pypi.org上检查新上传的包


英文原文:

https://medium.com/analytics-vidhya/building-a-python-package-in-minutes-7bb702a6eb65



Tags:Python包   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
pip config 主要包含以下子命令:set、get、edit、list、debug、unset。下面我们逐一介绍下它们。pip config set这个命令允许我们以name=value的形式配置某些项,比如设置镜像...【详细内容】
2022-03-18  Tags: Python包  点击:(525)  评论:(0)  加入收藏
构建包的过程有些复杂,但从长远来看是值得的,尤其是可以创建属于自己的Python包。本文的目的是通过对构建一个新发行包的案例研究,让您了解需要构建什么以及如何构建python包的...【详细内容】
2020-09-09  Tags: Python包  点击:(76)  评论:(0)  加入收藏
包 定义:包是一种通过使用‘.模块名’来组织python模块名称空间的方式。 注意: 无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,...【详细内容】
2020-05-26  Tags: Python包  点击:(47)  评论:(0)  加入收藏
一起学习,一起成长!Numpy数组的索引是一个内容丰富的主题,因为选取数据子集或单个元素的方式有很多。 一维数组In[13]:arr=np.arange(10)In[14]:arrOut[14]: array([0, 1, 2, 3,...【详细内容】
2019-11-13  Tags: Python包  点击:(157)  评论:(0)  加入收藏
▌简易百科推荐
近几年 Web3 被炒得火热,但是大部分人可能还不清楚什么是 Web3,今天就让w3cschool编程狮小师妹带你了解下 Web3 是什么?与我们熟知的 Web1 和 Web2 又有什么区别呢?web3.0什么是...【详细内容】
2022-07-15  编程狮W3Cschool    Tags:Web3.0   点击:(2)  评论:(0)  加入收藏
1、让我们一起来看下吧,直接上图。 第一眼看到是不是觉得很高逼格,暗黑画风,这很大佬。其实它就是------AidLearning。一个运行在安卓平台的linux系统,而且还包含了许多非常强大...【详细内容】
2022-07-15  IT智能化专栏    Tags:AidLearning   点击:(2)  评论:(0)  加入收藏
真正的大师,永远都怀着一颗学徒的心! 一、项目简介 今天说的这个软件是一款基于Python+vue的自动化运维、完全开源的云管理平台。二、实现功能 基于RBAC权限系统 录像回放 ...【详细内容】
2022-07-14  菜鸟程序猿    Tags:Python   点击:(3)  评论:(0)  加入收藏
前言今天笔者想和大家来聊聊python接口自动化的MySQL数据连接,废话不多说咱们直接进入主题吧。 一、什么是 PyMySQL?PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,P...【详细内容】
2022-07-11  测试架构师百里    Tags:python   点击:(19)  评论:(0)  加入收藏
aiohttp什么是 aiohttp?一个异步的 HTTP 客户端\服务端框架,基于 asyncio 的异步模块。可用于实现异步爬虫,更快于 requests 的同步爬虫。安装pip install aiohttpaiohttp 和 r...【详细内容】
2022-07-11  VT漫步    Tags:aiohttp   点击:(15)  评论:(0)  加入收藏
今天我们学习下 Queue 的进阶用法。生产者消费者模型在并发编程中,比如爬虫,有的线程负责爬取数据,有的线程负责对爬取到的数据做处理(清洗、分类和入库)。假如他们是直接交互的,...【详细内容】
2022-07-06  VT漫步    Tags:Python Queue   点击:(34)  评论:(0)  加入收藏
继承:是面向对象编程最重要的特性之一,例如,我们每个人都从祖辈和父母那里继承了一些体貌特征,但每个人却又不同于父母,有自己独有的一些特性。在面向对象中被继承的类是父类或基...【详细内容】
2022-07-06  至尊小狸子    Tags:python   点击:(25)  评论:(0)  加入收藏
点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍。本文1553字,阅读约需4分钟 Hi,大家好,我是CoCo。在上一篇Python自动化测试系列文章:Python自动化测试之P...【详细内容】
2022-07-05  CoCo的软件测试小栈    Tags:Python   点击:(27)  评论:(0)  加入收藏
第一种方式:res = requests.get(url, params=data, headers = headers)第二种方式:res = requests.get(url, data=data, headers = headers)注意:1.url格式入参只支持第一种方...【详细内容】
2022-07-05  独钓寒江雪之IT    Tags:Python request   点击:(19)  评论:(0)  加入收藏
什么是python类的多态python的多态,可以为不同的类实例,或者说不同的数据处理方式,提供统一的接口。用比喻的方式理解python类的多态比如,同一个苹果(统一的接口)在孩子的眼里(类实...【详细内容】
2022-07-04  写小说的程序员    Tags:python类   点击:(28)  评论:(0)  加入收藏
站内最新
站内热门
站内头条