建立和使用Python自定义模块:打包+pip安装

news2024/11/28 10:34:19

文章目录

  • (零)拷目录-无法卸载
  • (一)打包结构
    • (1.1)`__init__.py`
    • (1.2)`setup.py`
  • (二)开始打包
    • (2.1)命令出错?
  • (三)测试
    • (3.1)安装
    • (3.2)依赖程序
    • (3.3)pip list
    • (3.4)pip show
    • (3.5)pip uninstall

在《建立和使用Python自定义模块》里面,我把自定义的模块拷贝到 site-packagesdist-packages 目录。
可是 Ctrl-C + Ctrl-V 总归不是正常的动作,所以我还是想把模块做成安装包,这样便于管理版本。

(零)拷目录-无法卸载

顺便说一下,之前的模块因为是拷进去的。
虽然pip list和show都能用,但uninstall则找不到安装信息,如下:

> pip uninstall ACTP
Found existing installation: ACTP   1.0.3
Can't uninstall 'ACTP  '. No files were found to uninstall.

(一)打包结构

之前的目录结构:
在这里插入图片描述

需要扩充成类似下面的结构,也就是包ACTP需要上一层有固定的结构。

TopPath/
├── README.txt
├── setup.py
└── ACTP/
	├── __init__.py
	└── crossPlat.py
	└── DTStringFinder.py
	└── mylogger.py
	└── tnu.py

其中README.txt在Windwos下是个Ansi编码的文本文件。
可以加入这个自定义包比较详细的说明内容,打包后会贴在元数据的后面。

另外还需要修改:

(1.1)__init__.py

之前这个文件是空的,现在添加包的import和版本信息。

from .crossPlat import *
from .DTStringFinder import *
from .mylogger import *
from .tnu import *

__version__ = '1.0.3'

(1.2)setup.py

新建这个文件,加入一些包的信息。
这些就是pip show 的时候显示的(以及安装包的)内容。

from setuptools import setup
from setuptools import find_packages

setup(
    name="ACTP",
    version="1.0.3",
    author="曾如石",
    author_email="ddrfan@163.com",
    url='http://www.scaocheng.com/',
    description="在奥诚科技的任务调度平台中更加方便的开发Python类型业务规则",
    long_description=open('README.txt').read(),
    long_description_content_type="text/markdown",
    python_requires=">=3.6.0",
    license="Private",
    install_requires=[""],
    # packages=["crossPlat","tnu",],
    packages=find_packages(),                           # 打包目录下的全部模块
    # packages=find_packages(exclude=["A", "B"])		# 打包除了指定模块的全部模块
    # include_package_data = True,						# 打包路径下的其他文件
    platforms="any",
)

(二)开始打包

进入setup.py所在的上层目录,
执行:python setup.py bdist_wheel

PS: D:\TopPath> python setup.py bdist_wheel
running bdist_wheel
running build
running build_py
creating build
creating build\lib
creating build\lib\ACTP
copying ACTP\crossPlat.py -> build\lib\ACTP
copying ACTP\DTStringFinder.py -> build\lib\ACTP
copying ACTP\mylogger.py -> build\lib\ACTP
copying ACTP\tnu.py -> build\lib\ACTP
copying ACTP\__init__.py -> build\lib\ACTP
\Python\Python310\lib\site-packages\setuptools\command\install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
installing to build\bdist.win-amd64\wheel
running install
running install_lib
creating build\bdist.win-amd64
creating build\bdist.win-amd64\wheel
creating build\bdist.win-amd64\wheel\ACTP
copying build\lib\ACTP\crossPlat.py -> build\bdist.win-amd64\wheel\.\ACTP
copying build\lib\ACTP\DTStringFinder.py -> build\bdist.win-amd64\wheel\.\ACTP
copying build\lib\ACTP\mylogger.py -> build\bdist.win-amd64\wheel\.\ACTP
copying build\lib\ACTP\tnu.py -> build\bdist.win-amd64\wheel\.\ACTP
copying build\lib\ACTP\__init__.py -> build\bdist.win-amd64\wheel\.\ACTP
running install_egg_info
running egg_info
creating ACTP.egg-info
writing ACTP.egg-info\PKG-INFO
writing dependency_links to ACTP.egg-info\dependency_links.txt
writing top-level names to ACTP.egg-info\top_level.txt
writing manifest file 'ACTP.egg-info\SOURCES.txt'
reading manifest file 'ACTP.egg-info\SOURCES.txt'
writing manifest file 'ACTP.egg-info\SOURCES.txt'
Copying ACTP.egg-info to build\bdist.win-amd64\wheel\.\ACTP-1.0.3-py3.10.egg-info
running install_scripts
creating build\bdist.win-amd64\wheel\ACTP-1.0.3.dist-info\WHEEL
creating 'dist\ACTP-1.0.3-py3-none-any.whl' and adding 'build\bdist.win-amd64\wheel' to it
adding 'ACTP/DTStringFinder.py'
adding 'ACTP/__init__.py'
adding 'ACTP/crossPlat.py'
adding 'ACTP/mylogger.py'
adding 'ACTP/tnu.py'
adding 'ACTP-1.0.3.dist-info/METADATA'
adding 'ACTP-1.0.3.dist-info/WHEEL'
adding 'ACTP-1.0.3.dist-info/top_level.txt'
adding 'ACTP-1.0.3.dist-info/RECORD'
removing build\bdist.win-amd64\wheel
PS: D:\TopPath>

然后在生成的dist目录中,
出现了打好的安装包ACTP-1.0.3-py3-none-any.whl

可以通过pip来安装了:

...\dist> pip install .\ACTP-1.0.3-py3-none-any.whl
Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
Processing d:\workshwc\ac_dcm\publicpython\dist\actp-1.0.3-py3-none-any.whl
Installing collected packages: ACTP
Successfully installed ACTP-1.0.3

(2.1)命令出错?

error: invalid command 'bdist_wheel'

那么就先:

> pip install wheel
Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
Collecting wheel
  Downloading https://mirrors.aliyun.com/pypi/packages/61/86/cc8d1ff2ca31a312a25a708c891cf9facbad4eae493b3872638db6785eb5/wheel-0.40.0-py3-none-any.whl (64 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 64.5/64.5 kB 290.4 kB/s eta 0:00:00
Installing collected packages: wheel
Successfully installed wheel-0.40.0

(三)测试

(3.1)安装

pip install ACTP-1.0.3-py3-none-any.whl :前面测试了,正常。

(3.2)依赖程序

执行依赖ACTP的程序,OK。

在这里插入图片描述

(3.3)pip list

看得到。

> pip list
Package            Version
------------------ --------
ACTP               1.0.3
certifi            2023.5.7
charset-normalizer 3.1.0
distlib            0.3.6
filelock           3.12.0
idna               3.4
piexif             1.1.3
Pillow             9.5.0
pip                23.1.2
platformdirs       3.5.1
py4j               0.10.9.2
pyspark            3.2.0
requests           2.30.0
setuptools         65.5.0
urllib3            2.0.2
virtualenv         20.23.0
wheel              0.40.0

(3.4)pip show

正常显示信息。
但show看不见我们在README.txt里面的写内容。

> pip show ACTP
Name: ACTP
Version: 1.0.3
Summary: 在奥诚科技的任务调度平台中更加方便的开发Python类型业务规则
Home-page: http://www.scaocheng.com/
Author: 曾如石
Author-email: ddrfan@163.com
License: Private
Location: ...\python310\lib\site-packages
Requires:
Required-by:

(3.5)pip uninstall

能卸载。

> pip uninstall ACTP
Found existing installation: ACTP 1.0.3
Uninstalling ACTP-1.0.3:
  Would remove:
    ...\python310\lib\site-packages\actp-1.0.3.dist-info\*
    ...\python310\lib\site-packages\actp\*
Proceed (Y/n)? y
  Successfully uninstalled ACTP-1.0.3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/664637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

构建高可用、高并发和高性能的微服务系统(Spring Cloud实现)

目前Java都在流行一个说词:高并发。 反正不管是不是,反正就是高并发。 谈高并发,我们需要知道几个名词: -响应时间(Response Time,RT)-吞吐量(Throughput)-每秒查询率QPS(Query Per Second)-每秒事务处理量TPS(Transa…

SuiteQlet Bundle

Content​​​​​​​ 1. Foreword 2. Overview 2.1 Glossary 2.2 Features 2.3 Design Description 3. Install 4. Setup 5. Instruction 5.1 Query 5.2 Chart 5.3 Publish Dashboard 6. Note 7. Video Link 1. Foreword SuiteQL is a powerful tool for data q…

python 第八章 集合set {}

系列文章目录 第一章 初识python 第二章 变量 第三章 基础语句 第四章 字符串str 第五章 列表list [] 第六章 元组tuple ( ) 第七章 字典dict {} 文章目录 8.1 创建集合8.2集合常见操作方法增加数据删除数据查找数据 8.1 创建集合 创建集合使用 { } 或 set(),但是如…

【MySQL】增删查改基础

目录 一、Create(创建) 1、insert(插入) 1.1单行数据插入 1.2多行数据插入 1.3插入或者替换更新 2、replace(替换) 二、Retrieve(读取) 1、select 1.1全列查询 1.2指定列查询利用selsct计算表达式 1.3筛选结果去重 2、where 2.1运算符 2.2找到英语小于60分的同学…

RFID课程要点总结_4 Tag Identification Protocol

4. Tag Identification Protocol Checksum procedure: parity checks, LRC, CRC 奇偶校验不多说,查1的个数,poor error recognition。电路通过所有位异或是偶校验,结果为1说明有错误;再取反是奇校验。 LRC longitudinal redund…

02 React组件、React组件实例的三大核心属性

总结 一、React组件 1.1 函数组件 定义 要求组件名称的首字母需要大写 function 组件名称(){ // 返回一段jsx的视图结构 return <div></div> }调用 <组件名称></组件名称> 或 <组件名称 /> 组件名首字母必须大写. 因为react以此来区分组件元…

一、动画 - 过渡效果transition

内容目录&#xff1a; 过渡动画&#xff1b;过渡动画的属性&#xff1b; 一、过渡动画 过渡&#xff08;transition&#xff09;作用&#xff1a;- 通过过渡可以指定一个属性发生变化时的切换方式- 通过过渡可以创建一些非常好的效果&#xff0c;提升用户的体验现在我们通过一…

nginx的操作手册和nginx的升级

总结 目录 一首先关闭防火墙和下载nginx包 1.安装依赖包 2.创建运行用户与组 3.进入nginx的目录下进行编译安装 4. 编译和编译安装 5.让系统识别nginx的操作命令 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ 6.添加nginx系统服务把nginx服务加入到…

Idea+maven+springboot项目搭建系列--3 整合阿里云Canal完成Mysql数据的监听

前言&#xff1a;在搭建canal 服务之后&#xff0c;项目中就可以连接canal &#xff0c;完成对感兴趣的数据库及其表中数据的变动完成监听&#xff0c;本文依赖于你已经完成了对canal 服务的搭建工作&#xff1b; 1 Cannal 特点&#xff1a; Canal是阿里巴巴开源的一款基于My…

Spring Boot实战:拦截器和监听器的应用指南

当使用Spring Boot时&#xff0c;我们可以通过拦截器&#xff08;Interceptor&#xff09;和监听器&#xff08;Listener&#xff09;来实现对请求和响应的处理。拦截器和监听器提供了一种可插拔的机制&#xff0c;用于在请求处理过程中进行自定义操作&#xff0c;例如记录日志…

使用自动化测试获取手机短信验证码

目前在职测试开发,,写一些脚本,个人认为这职业不科学不应该有的职业,测试就是测试,开发就是开发,运维还是老鸟,这行业总能折腾些莫名其妙的东西出来,刚做这行时学的第一门语言是bash shell, 去新去单位上班直接写了个一键搭建测试环境的测试脚本,本来不想干测试了,好好做微信小…

Linux 学习记录36(C高级篇)

Linux 学习记录36(C高级篇) 本文目录 Linux 学习记录36(C高级篇)一、文件相关指令1. chmod 修改文件用户权限(1. 权限字母表示法(2. 权限8进制表示法 2. 修改文件所属组(1. chgrp(2. chown 能够同时修改多个(3. 创建链接文件>1 ln创建硬链接文件>2 ln -s 创建软链接文件 …

7DGroup性能实施项目日记1

壬寅年 己酉月 丁丑日 2022年9月21日 晴 经过上周的7DGroup学员群内部沟通&#xff0c;我们决定启动一个性能实施项目。 在这个实施项目中&#xff0c;把RESAR性能工程的每个环节都落地一遍&#xff0c;让所有参与培训的学员都可以参与。 在这个项目实施过程中&#xff0c;我打…

苹果照片传输到电脑怎么传?批量传输的技巧!

苹果照片传输到电脑怎么传&#xff1f;照片是苹果手机和电脑之间传输比较频繁的内容。对于刚接触苹果手机的朋友&#xff0c;可能还不是很了解传输方法&#xff0c;鉴于此&#xff0c;我们在这里提供几种有效方法来帮助您完成此项任务。无论您想要使用或不使用 iTunes 将照片从…

CAN Frame详解

CAN Frame是CAN总线通信的基本单位&#xff0c;它有多种类型&#xff0c;其中最常见的是数据帧&#xff08;Data Frame&#xff09;&#xff0c;用于传输数据。数据帧有标准格式&#xff08;Standard Format&#xff09;和扩展格式&#xff08;Extended Format&#xff09;&…

redhat 6.4安装oracle11g RAC (一)

&#xff08;一&#xff09;基础环境 虚拟机环境 &#xff1a;vmware workstation 12 操作系统 &#xff1a; redhat6.4 - 64bit 数据库版本 &#xff1a;11.2.0.4 Last login: Fri Jun 16 18:40:20 2023 from 192.168.186.1 [rootrhel64 ~]# cat /etc/redhat-release Red Ha…

项目描述1

学成在线- 6分片上传&#xff0c;8xxl-job 课程模块开发 分布式事务&#xff0c;消息表 spring-security oauth 用户认证授权 学成在线 学成在线认证授权 一些代码 黑马分布式事物 框架学习 - 若依 / RuoYi-Vue-Plus 统一数据权限 若依数据权限使用 数据权限表结构 1. 设备故…

音视频技术开发周刊 | 298

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 AI艺术在北京798&#xff0c;展望人工智能与环境的未来 本文很有意思的提出了个假设&#xff0c;通过人工智能和艺术家协作与实践产生环绕地球的叙事&#xff0c;去开启置…

【事故致因】HFACS模型各层级中因素的具体含义及内容归纳

HFACS模型各层级中因素的具体含义及内容归纳 1 HFACS(2000版本)中英文结构图2 定义3 结构组成4 各层级因素及内容4.1 不安全行为4.2 不安全行为的前提条件4.3 不安全监督4.4 组织影响 5 HFACS框架的使用 1 HFACS(2000版本)中英文结构图 英文版本&#xff08;论文首次提出原图&…

接口测试基础知识(使用 Fiddler 抓包、使用 Postman 发起请求、Postman汉化教程)

文章目录 一、 什么是接口二、接口测试的流程三、设计接口测试测试用例常见的点四、使用 Fiddler 进行抓包1. 一个重要设置2. 进行抓包 五、使用 Postman 发起 GET 请求1. 通过API文档得到调用信息2. 通过 Postman 构造 GET 请求 六、使用 Postman 发起 POST 请求1. 得到接口调…