Python 自定义三方库
2024-09-07 19:40:28
一、注册一个pypi账号
二、github上创建一个项目
三、编写自己的python项目
项目结构(参考):https://github.com/gm19900510/licensetool
先建一个目录,比如magetool,这个里边放的是你的项目代码。在这个magetool目录里,新建一个__init__.py,这个文件里可以什么都不用写,然后就是你要发布的.py文件
四、编写setup.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#############################################
# File Name: setup.py
# Author: gm
# Mail: 1025304567@qq.com
# Created Time: 2019-04-11 15:37:04
#############################################
from setuptools import setup, find_packages
setup(
name = "licensetool",
version = "0.0.2",
keywords = ("pip", "license","licensetool", "tool", "gm"),
description = "设备指纹获取、license生成、指纹与有效期验证工具",
long_description = "设备指纹获取、license生成、指纹与有效期验证工具",
license = "MIT Licence",
url = "https://github.com/gm19900510/licensetool",
author = "gm",
author_email = "1025304567@qq.com",
packages = find_packages(),
include_package_data = True,
platforms = "any",
install_requires = ['chardet']
)
官方示例及说明
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="example-pkg-your-username",
version="0.0.1",
author="Example Author",
author_email="author@example.com",
description="A small example package",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/pypa/sampleproject",
packages=setuptools.find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
)
setup()接受几个参数。此示例包使用相对最小的集合:
- name是包的分发名称。只要包含字母,数字_和 -。
- version 是包版本看 PEP 440有关版本的更多详细信息。
- author 和author_email用于识别包的作者。
- description 是一个简短的,一句话的包的总结。
- long_description是包的详细说明。这显示在Python Package Index的包详细信息包中。在这种情况下,加载长描述README.md是一种常见模式。
- long_description_content_type告诉索引什么类型的标记用于长描述。在这种情况下,它是Markdown。
- url是项目主页的URL。对于许多项目,这只是一个指向GitHub,GitLab,Bitbucket或类似代码托管服务的链接。
- packages是应包含在分发包中的所有Python 导入包的列表。我们可以使用 自动发现所有包和子包,而不是手动列出每个包。在这种情况下,包列表将是example_pkg,因为它是唯一存在的包。find_packages()
- classifiers告诉索引并点一些关于你的包的其他元数据。在这种情况下,该软件包仅与Python 3兼容,根据MIT许可证进行许可,并且与操作系统无关。您应始终至少包含您的软件包所使用的Python版本,软件包可用的许可证以及您的软件包将使用的操作系统。有关分类器的完整列表,请参阅 https://pypi.org/classifiers/。
MANIFEST.in文件
用于包含其他文件
具体格式和参数参考 https://docs.python.org/3.6/distutils/sourcedist.html
include licensetool/private.pem
include MANIFEST.in
五:打包自已的项目
在代码编写完成,自已测试后没有问题了,就可以打包了。 打包使用下边两个其中一个命令(我使用的是第二个):
python setup.py bdist_egg
# 生成类似 edssdk-0.0.1-py2.7.egg,支持 easy_install
python setup.py sdist
# 生成类似 edssdk-0.0.1.tar.gz,支持 pip
两个命令打包好之后都会生成build和dist两个目录,打包的文件会放在dist目录下,供后边上传到PyPi服务器
六:上传到PyPi服务器
安装twine
pip install twine
上传
twine upload dist/*
执行完这行指令之后,会提示输入pypi的用户名和密码,正常输入就可以
最新文章
- 关于SQLSERVER中用SQL语句查询的一些个人理解
- QLPreViewController的初步实用
- oracle修改字符集
- STL数组处理常用函数
- 教你彻底解决css中设置z-index的值无效的问题
- 夺命雷公狗-----React---4--props变量的传递
- android: open failed: EACCES (Permission denied)
- Winform 中 DesignMode 返回值不正确的问题。
- Java String类具体解释
- [转]HTTPS连接的前几毫秒发生了什么
- pandas 基础
- Struts2标签遍历List<;Map<;String,String>;>;
- loj#6436. 「PKUSC2018」神仙的游戏(生成函数)
- 配置supervisor管理beego应用
- <;Linux>; Ubuntu error: ssh: connect to host master port 22: No route to host lost connection
- MyBatis的深入原理分析之1-架构设计以及实例分析
- Java Hash Collision之数据生产
- Jenkins(三)---Jenkins初始配置和插件配置
- ubuntu update-alternatives
- Xilinx Microblaze Bootloader
热门文章
- Spring Boot教程(二十二)使用Swagger2构建强大的RESTful API文档(1)
- es入门--curl的使用
- Http请求详解(转)----请求+响应各字段详解
- bootstrap基础讲解
- serial redirection
- 原生JS去重
- Delphi驱动方式WINIO模拟按键 可用
- 网易云课堂_C++程序设计入门(下)_第7单元:出入虽同趣,所向各有宜 – 文件输入和输出_第7单元 - 作业2:编程互评
- Shadow安装
- 别把&;和nohup混为一谈, 根本不是同一个东西好不好 ------ 聊聊./a.out &; , nohut ./a.out , nohup ./a.out &;的区别