自定义pip 包开发简单说明
文档主要来自官方文档,主要是为了测试学习
创建pip 包项目
- 项目结构
├── LICENSE
├── README.md
├── dalongrong_example_pkg
│ └── __init__.py
└── setup.py
- 代码说明
dalongrong_example_pkg/init.py
name = "dalongrong_example_pkg"
setup.py
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="dalongrong_example_pkg",
version="0.0.1",
author="dalongrong",
author_email="1141591465@qq.com",
description="A small example package",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/rongfengliang/pip-demo-package.git",
packages=setuptools.find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
)
README.md 文件,就是一个简单的说明
安装构建依赖&& 生成归档文件
- 安装setuptools&& wheel
python3 -m pip install --user --upgrade setuptools wheel
- 生成归档文件
python3 setup.py sdist bdist_wheel
效果:
python3 setup.py sdist bdist_wheel
running sdist
running egg_info
creating dalongrong_example_pkg.egg-info
writing dalongrong_example_pkg.egg-info/PKG-INFO
writing dependency_links to dalongrong_example_pkg.egg-info/dependency_links.txt
writing top-level names to dalongrong_example_pkg.egg-info/top_level.txt
writing manifest file 'dalongrong_example_pkg.egg-info/SOURCES.txt'
reading manifest file 'dalongrong_example_pkg.egg-info/SOURCES.txt'
writing manifest file 'dalongrong_example_pkg.egg-info/SOURCES.txt'
running check
creating dalongrong_example_pkg-0.0.1
creating dalongrong_example_pkg-0.0.1/dalongrong_example_pkg
creating dalongrong_example_pkg-0.0.1/dalongrong_example_pkg.egg-info
copying files to dalongrong_example_pkg-0.0.1...
copying README.md -> dalongrong_example_pkg-0.0.1
copying setup.py -> dalongrong_example_pkg-0.0.1
copying dalongrong_example_pkg/__init__.py -> dalongrong_example_pkg-0.0.1/dalongrong_example_pkg
copying dalongrong_example_pkg.egg-info/PKG-INFO -> dalongrong_example_pkg-0.0.1/dalongrong_example_pkg.egg-info
copying dalongrong_example_pkg.egg-info/SOURCES.txt -> dalongrong_example_pkg-0.0.1/dalongrong_example_pkg.egg-info
copying dalongrong_example_pkg.egg-info/dependency_links.txt -> dalongrong_example_pkg-0.0.1/dalongrong_example_pkg.egg-info
copying dalongrong_example_pkg.egg-info/top_level.txt -> dalongrong_example_pkg-0.0.1/dalongrong_example_pkg.egg-info
Writing dalongrong_example_pkg-0.0.1/setup.cfg
creating dist
Creating tar archive
removing 'dalongrong_example_pkg-0.0.1' (and everything under it)
running bdist_wheel
running build
running build_py
creating build
creating build/lib
creating build/lib/dalongrong_example_pkg
copying dalongrong_example_pkg/__init__.py -> build/lib/dalongrong_example_pkg
installing to build/bdist.macosx-10.13-x86_64/wheel
running install
running install_lib
creating build/bdist.macosx-10.13-x86_64
creating build/bdist.macosx-10.13-x86_64/wheel
creating build/bdist.macosx-10.13-x86_64/wheel/dalongrong_example_pkg
copying build/lib/dalongrong_example_pkg/__init__.py -> build/bdist.macosx-10.13-x86_64/wheel/dalongrong_example_pkg
running install_egg_info
Copying dalongrong_example_pkg.egg-info to build/bdist.macosx-10.13-x86_64/wheel/dalongrong_example_pkg-0.0.1-py3.7.egg-info
running install_scripts
adding license file "LICENSE" (matched pattern "LICEN[CS]E*")
creating build/bdist.macosx-10.13-x86_64/wheel/dalongrong_example_pkg-0.0.1.dist-info/WHEEL
creating 'dist/dalongrong_example_pkg-0.0.1-py3-none-any.whl' and adding 'build/bdist.macosx-10.13-x86_64/wheel' to it
adding 'dalongrong_example_pkg/__init__.py'
adding 'dalongrong_example_pkg-0.0.1.dist-info/LICENSE'
adding 'dalongrong_example_pkg-0.0.1.dist-info/METADATA'
adding 'dalongrong_example_pkg-0.0.1.dist-info/WHEEL'
adding 'dalongrong_example_pkg-0.0.1.dist-info/top_level.txt'
adding 'dalongrong_example_pkg-0.0.1.dist-info/RECORD'
removing build/bdist.macosx-10.13-x86_64/wheel
├── LICENSE
├── README.md
├── build
│ ├── bdist.macosx-10.13-x86_64
│ └── lib
│ └── dalongrong_example_pkg
│ └── __init__.py
├── dalongrong_example_pkg
│ └── __init__.py
├── dalongrong_example_pkg.egg-info
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ ├── dependency_links.txt
│ └── top_level.txt
├── dist
│ ├── dalongrong_example_pkg-0.0.1-py3-none-any.whl
│ └── dalongrong_example_pkg-0.0.1.tar.gz
└── setup.py
安装发布上传依赖
- 安装twine
python3 -m pip install --user --upgrade twine
- 注册测试pip 账户
https://test.pypi.org/account/register/ - 上传
需要输入注册的账户
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
- 效果

使用上传的包
pip 方式安装
- 安装
pip install -i https://test.pypi.org/simple/ dalongrong-example-pkg
- 调用代码
app.py
import dalongrong_example_pkg
print(dalongrong_example_pkg.name)
- 运行
python app.py
dalongrong_example_pkg
- requirements 方式使用
项目结构:
├── main.py
├── requirements.txt
└── run.sh
requirements.txt 文件:
dalongrong-example-pkg
main.py:
import dalongrong_example_pkg
print(dalongrong_example_pkg.name)
run.sh:
#!/bin/sh
pip install -i https://test.pypi.org/simple/ -r requirements.txt
python main.py
说明
这个只是一个简单的demo,只是为了方便学习
参考资料
https://packaging.python.org/tutorials/packaging-projects/
https://test.pypi.org/project/dalongrong-example-pkg/#history
https://github.com/rongfengliang/pip-demo-package
自定义pip 包开发简单说明的更多相关文章
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
本文转自 :http://www.cnblogs.com/wendingding/p/3761730.html ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布 ...
- iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 一.项目文件结构和plist文件 二.实现效果 三.代码示例 1.没有使用配套的类,而是直接使用xib文 ...
- 用QtWebKit开发简单的浏览器
用QtWebKit开发简单的浏览器 1.代码实现 工程目录结构如下: AddressBar类包含了地址栏和按钮两个控件,将地址栏回车和按钮点击信号与goToSite()槽连接. 当回车和点击事件发生时 ...
- 从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器
从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器 之前时间一直在使用Caliburn.Micro这种应用了MVVM模式的WPF框架做开发,是时候总结一下了. Calibu ...
- 沉淀再出发:在python3中导入自定义的包
沉淀再出发:在python3中导入自定义的包 一.前言 在python中如果要使用自己的定义的包,还是有一些需要注意的事项的,这里简单记录一下. 二.在python3中导入自定义的包 2.1.什么是模 ...
- SpringBoot-dubbo自定义负载均衡实现简单灰度
本文介绍如何利用dubbo自定义负载实现简单灰度(用户纬度,部分用户访问一个服务,其余访问剩余服务). 其实在这之前,对dubbo了解的也不是很多,只是简单的使用过,跑了几个demo而已,但是得知接下 ...
- Python PIP包管理器
版权所有,未经许可,禁止转载 章节 Python 介绍 Python 开发环境搭建 Python 语法 Python 变量 Python 数值类型 Python 类型转换 Python 字符串(Str ...
- 自定义搭建PHP开发环境
学习了一段时间php了,因为之前是刚接触php,所以用的是集成安装包(wamp).现在想进一步了解apache.mysql.php之间的关系以及提升自己所以进行自定义搭建PHP开发环境.废话不多说,请 ...
- 微信公众平台自定义菜单PHP开发
微信公众平台自定义菜单PHP开发,微信公众平台自定义菜单是如何实现的呢?其实很简单,首先在微信公众平台升级为服务号,获取appid和appsecret,然后根据这2个参数获取access_token, ...
随机推荐
- [原]Universal Windows问题:winapifamily问题:WINAPI_PARTITION_DESKTOP问题:WINAPI_PARTITION_APP问题:WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)问题
问题回顾: 我新建的生成dll的vs问题: 此vs项目包含需要GL.h 结果此文件声明的GLint找不到! 进去发现#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITI ...
- Archiva 2.2.3 安装运行的时候出现协议版本错误
在 Archiva 安装成功后运行的时候出现协议版本错误: Caused by: javax.net.ssl.SSLException: Received fatal alert: protocol_ ...
- MySQL造数据脚本-亲试
DELIMITER $$CREATE DEFINER=`root`@`192.168.2.254` PROCEDURE `pjzzspdz_fpmx_initdata12101245`()BEGIN ...
- Grafana + Prometheus 监控PostgreSQL
效果图 部署环境 服务器名称 IP地址 部署业务 备注 部署agent sht-sgmhadoopcm-01 172.16.101.54 PostgreSQL 监控服务器.被监控服务器 node_ex ...
- coursera-斯坦福-机器学习-吴恩达-笔记week4
1 神经网络的提出 线性回归和逻辑回归能很好的解决特征变量较少的问题,但对于变量数量增加的复杂非线性问题,单纯增加二次项和三次项等特征项的方法计算代价太高. 2 神经网络算法 2.1 神经元 模拟神经 ...
- Wampserver 403问题
使用Wampserver 2.4.23做反向代理时报403没有权限:是因为在升级到2.4之后的版本只修改httpd.conf文件不管用 正确步骤如下:1.修改httpd.conf 文件中的Requ ...
- WINDOWS SERVER 2016 设置使用照片查看器查看图片
1.使用win+R快捷键快速打开运行,输入regedit打开注册表 2.在注册表中找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewe ...
- 解决Fiddler查看Post参数中文乱码的问题
解决Fiddler查看Post参数中文乱码的问题 解决方法: 1.win+R 2.打开注册表编辑器:输入regedit +回车+是 3.HKEY_CURRENT_USER\Software\Micro ...
- ceph存储集群测试方案
--测试目的 测试ceph集群的读写性能,根据测试数据了解整个ceph集群的性能情况. --测试环境 1.8节点ceph集群环境,1台虚拟机(cpu 8核,内存8G),8k的块大小,时长2小时 2.8 ...
- Python 进程池的同步方法和异步方法
import time from multiprocessing import Process,Pool def f1(n): time.sleep(0.5) # print(n) return n* ...