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

开发 后端
本文的目的是通过对构建一个新发行包的案例研究,让您了解需要构建什么以及如何构建python包的基础知识。

前言

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

[[341688]]

开始

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

  • IDE (Vs Code)
  • Python 3

构建Python包

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

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

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

[[341689]]

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

  1. b_dist/__init__.py 

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

  1. b_dist/Binomialdistribution.py 

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

  1. b_dist/Guassiandistribution.py 

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

  1. b_dist/Generaldistribution.py 

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

  1. b_dist/licence.txt 

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

  1. b_dist/setup.cfg 

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

  1. README.md 

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

  1. setup.py 

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

本地运行包

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

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

输入后应该是输出:

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

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

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

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

上传Python包

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

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

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

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

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

  1. pip install twine 

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

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

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

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

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

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

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

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

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

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

英文原文:

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

 

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2017-08-03 17:30:26

戴尔IoT设备

2016-09-30 15:13:01

Python代码

2022-05-20 07:36:02

LiveTerm工具

2022-03-28 08:00:00

数据库GraphQL公共云

2013-07-02 09:58:38

ClojureClojure教程

2022-04-06 09:28:04

漏洞SQL注入

2010-02-23 14:19:30

Python目录操作

2021-12-02 11:54:10

云计算云错误配置网络安全

2010-03-01 18:13:22

Python程序

2023-05-09 15:04:37

人工智能工具

2010-11-30 10:12:08

2009-12-29 09:01:46

ADSL断线

2024-03-12 10:11:56

Python计算机视觉

2009-11-25 10:14:43

2009-11-26 09:28:56

VS2003打包

2023-07-10 17:07:49

树莓派仪表盘

2010-01-21 09:46:24

C++程序

2010-01-06 15:35:06

JSON对象

2019-07-08 13:51:02

DockerWindows 10Windows

2010-03-04 10:01:01

Android基本组件
点赞
收藏

51CTO技术栈公众号