Python包和模块的分发详细介绍

作者:BlackMonkey 时间:2021-10-06 07:25:32 

发布Python包

上一篇介绍了如何使用别人的轮子,现在我们讨论下如何自己造轮子给别人用。

作为一个流行的开源开发项目,Python拥有一个活跃的贡献者和用户支持社区,这些社区也可以让他们的软件可供其他Python开发人员在开源许可条款下使用。这允许Python用户有效地共享和协作,从其他人已经创建的解决方案中受益于常见(有时甚至是罕见的)问题,以及可以提供他们自己的解决方案。

Pypi( Python Package Index) ,公共的模块存储中心

准备

distutils

官方库distutils,使用安装脚本setup.py来构建,安装包。2000年停止开发

setuptools

它是替代distutils 的增强版工具集,包含easy_install 工具,使用ez_setup.py文件,支持egg格式的构建和安装,提供查找,下载安装构建,发布,管理等包管理功能。setuptools是包管理的核心模块。

pip

目前包管理的事实标准,构建在setuptools之上,替代easy_install的,同样提供丰富的包管理功能、从Python3.4 开始之间包好在安装文件中。

wheel(轮子)

就光这个名字都如雷贯耳!有没有~

wheel格式定义在PEP427中wheel文件中不包含.pyc 文件提供bdist_wheel 作为seetuptools的扩展命令,这个命令可以用来生成新打包格式wheelpip 从1.4版本开始 提供了一个wheel子命令来安装wheel包,当然,需要先安装wheel模块。它可以让Python库以二进制形式安装,而不需要本地编译。

安装

python -m pip install setuptools wheel twine

至于为什么是Python -m pip 而不是 pip 可参看我的这篇blogpython -m pip

使用setup.py打包

下面 是 verify-python 项目的setup.py文件。


#!/usr/bin/env python3
# _*_ coding: utf-8 _*_
__author__ = "monkey"

from setuptools import setup, find_packages

with open("README.md", "r") as fh:
long_description = fh.read()

setup(name='verify-python',
version='0.0.2', # 版本号
description='An elegant verification code generator.', # 包的介绍
author='BlackMonkey', # 作者 就是我啦~
author_email='3213322480@qq.com', # 你的邮箱
url='https://github.com/blackmonkey121/verify', # 项目地址,一般的填git地址 也可以是任意可用的url 不过我喜欢使用 git
packages=find_packages(), # Python导入包的列表,我们使用find_packages() 来自动收集
long_description=long_description, # 项目的描述 一般是 string 上文中定义了它
long_description_content_type="text/markdown", # 描述文档 README 的格式 一般我喜欢MD. 也可以是你喜欢的其他格式 支不支持我就不知道了~ 估计HTML 是支持的
license="GPLv3", # 开源协议
# 这 需要去官网查,在下边提供了许可证连接 或者 你可以直接把我的粘贴走
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Operating System :: OS Independent"],

python_requires='>=3.3', # Python 的版本约束
# 其他依赖的约束
install_requires=[
"itsdangerous>=1.1.0",
"numpy>=1.11.3",
"opencv-python>=3.4",
"Pillow>=7.0",
"rsa>=4.0", ]
)

许可证获取

创建分发


# 生成分发文件
python setup.py sdist bdist_wheel

Python包和模块的分发详细介绍

如图在dist 下 存在两个文件


verify-python-0.0.2.tar.gz # 源码归档文件
verify_python-0.0.2-py3-none-any.whl # 内置的发行版文件

tar.gz文件是源归档,而.whl文件是 内置发行版。较新的pip版本优先安装内置发行版,但如果需要,将回落到源归档文件中。您应该始终上传源档案,并为项目兼容的平台提供内置档案。在这种情况下,我们的示例包在任何平台上都与Python兼容,因此仅需要一个内置发行版。

*.egg-info

应该是用来记录整个包的依赖和文件关系以及一些其他属性的东西,没有不影响包的使用,通常会在打包时生成。

分发

上传到Pypi 服务器上,可以是公有的Pypi服务器,也可以是公司或组织内私有的。
如果需要上传到公有服务器,需要注册账号注册


# 加密的上传
python3 -m twine upload dist/*

来源:https://www.cnblogs.com/monkey-code/p/13160585.html

标签:python,包,模块,分发
0
投稿

猜你喜欢

  • Django3.2 自动发现所有路由代码详解

    2022-08-10 21:35:14
  • 基于Python爬取京东双十一商品价格曲线

    2022-10-22 04:04:42
  • Django文件存储 自己定制存储系统解析

    2023-09-17 13:06:25
  • SQLserver 2008将数据导出到Sql脚本文件的方法

    2024-01-13 05:02:45
  • 垂直栅格与渐进式行距(上)

    2009-04-01 18:30:00
  • python实现蒙特卡罗模拟法的实践

    2023-08-11 02:22:02
  • python 使用shutil复制图片的例子

    2023-10-19 07:43:10
  • 使用fdopen实现对Python进程产生的文件进行权限最小化配置

    2021-04-20 15:49:05
  • MySQL中给自定义的字段查询结果添加排名的方法

    2024-01-25 08:17:40
  • python小白切忌乱用表达式

    2021-08-11 19:57:11
  • phpMyAdmin下载、安装和使用入门

    2007-06-15 11:00:00
  • 基于Python开发chrome插件的方法分析

    2023-04-22 14:41:33
  • python enumerate内置函数用法总结

    2023-06-24 05:54:24
  • python 中pyqt5 树节点点击实现多窗口切换问题

    2021-07-28 06:19:39
  • Python 统计字数的思路详解

    2023-01-29 00:17:44
  • 浅谈Python反射 & 单例模式

    2023-10-14 21:16:30
  • js读写COOKIE实现记住帐号或密码的代码(js读写COOKIE)

    2024-04-18 10:11:12
  • python用Tkinter做自己的中文代码编辑器

    2023-08-12 05:32:33
  • JavaScript的私有成员

    2009-03-25 20:45:00
  • PHP实现的登录,注册及密码修改功能分析

    2023-11-14 21:45:29
  • asp之家 网络编程 m.aspxhome.com