发布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

如图在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/*

总结

到此这篇关于Python包和模块的分发的详细介绍的文章就介绍到这了,更多相关python包和模块分发内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

python包和模块关系_Python包和模块的分发详细介绍相关推荐

  1. python代码电影人物关系_Python基于network模块制作电影人物关系图

    Python基于network模块制作电影人物关系图,节点,值为,模块,关系,算法 Python基于network模块制作电影人物关系图 易采站长站,站长之家为您整理了Python基于network模 ...

  2. python自己创建模块路径_python之本地模块/包使用和创建

    image.png 模块 模块实质上就是一个python文件. 它是用来组织代码的,文件名其实就是模块名. 例如hello.py hello就是模块的名称. 包 包(package),本质来说就是一个 ...

  3. 模块是python中普通的文件吗_python 包和模块

    当执行代码时,从这行开始执行:当外部调用代码为模块时,此部分不会被执行. if __name__ == '__main__': pass 模块是对代码的整理,包是对模块的整理. 模块 Python 模 ...

  4. python导入包相当于什么_Python包及其定义和引用详解

    对于一个需要实际应用的模块而言,往往会具有很多程序单元,包括变量.函数和类等,如果将整个模块的所有内容都定义在同一个 Python 源文件中,这个文件将会变得非常庞大,显然并不利于模块化开发. 什么是 ...

  5. python找不到了_python包找不到

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我有一个名为dns_poison.py的文件需要调用名为netscanner的包 ...

  6. python设计自定义栈类_Python如何自定义模块?Python基础教程,第十讲,自定义模块...

    学完此次课程,我能做什么? 通过此次课程,我们将学会如何自定义自己的模块和包,以及如何引用到自己的项目中,从而实现代码的复用. 学习此次课程,需要多久? 5-10分钟 课程内容 什么是Python的标 ...

  7. python中importlib模块安装_Python中标准模块importlib详解

    Python中标准模块importlib详解 模块简介 Python提供了importlib包作为标准库的一部分.目的就是提供Python中import语句的实现(以及__import__函数).另外 ...

  8. python模板引擎传迭代器_python之路 模块,序列化,迭代器,生成器

    一.模块 1.模块简介 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能.这也是使用python标准库的方法. 类似于函数式编程和面向过 ...

  9. python sys干嘛的_Python之sys模块

    Sys模块函数之多,我只能选取自己认为比较实用的一些函数列在此处.借马云找员工的说法,"找最合适的而不是最天才的",这句话,我个人觉得在很多方面都能适应,学习也不在话下.Sys模块 ...

最新文章

  1. c语言:婚礼上的谎言
  2. Nature综述:微生物构成的氮循环网络
  3. 接收到开始本地截图的命令:videoshot.exe 解决方法
  4. 各种汇编器masm masm32 fasm nasm yasm gas的区别
  5. tomcat 并发数已满_记一次天猫商城系统高并发的优化
  6. NIO详解(五):Buffer详解
  7. 成功解决Exception “unhandled AttributeError“ module ‘cv2.cv2‘ has no attribute ‘estimateRigidTransform‘
  8. springboot创建多个对象
  9. C#的winform的中委托显示图片
  10. Win XP2实用的修复工具
  11. EditText焦点问题
  12. Qt文档阅读笔记-QHeaderView::sectionResized官方解析与实例
  13. ECCV 2020 | 小米提出 Fair DARTS :公平的可微分神经网络搜索
  14. mysql使用条件限制乐观锁_使用Mysql乐观锁解决并发问题
  15. 7-118 估值一亿的AI核心代码 (20 分)
  16. 正则表达式 Tricks
  17. 在Ubuntu Server14.04上编译Android6.0源码
  18. Apizza--特别好用的 Http请求模拟工具 PHP写接口然后测试详细教程
  19. 服务器运行时狂响,服务器常见故障大全
  20. fortigate防火墙虚拟机版本的使用

热门文章

  1. 如何旋转BlackBerry BB10模拟器
  2. 示波器相关术语介绍(上)
  3. VS2010 与 glut freeglut GLtools glew等 配置教程
  4. 大学计算机考试美国,美国TOP20计算机专业大学申请建议
  5. Mirai qq机器人 c++版sdk(MiraiCP)
  6. 百度云盘云知梦php_全新云知梦LINUX服务器架设课程 软件+笔记+课件 7.7G Linux服务器视频教程,全套视频教程学习资料通过百度云网盘下载...
  7. Programmer Dvorak键盘布局
  8. 【解决方案】下载未加密视频(花屏问题)
  9. 【高分】ubuntu 、打开USB摄像头、Linux、USB摄像头驱动
  10. 并查集之LeetCode1579. 保证图可完全遍历