python程序的打包分发示例详解

目录
  • 引言
  • python程序打包
    • __init__.py文件的作用
    • 构建python包
  • 生成分发包
  • 本地安装
  • 调用

引言

python编程时,一部分人习惯将实现同一个功能的代码放在同一个文件;

使用这些代码只需要import就可以了;

下面看一个例子。

testModel.py

class Test:
    name = 'tom'
    age = 0
    __weight = 0
    def __init__(self,n,a,w):
        self.name = n
        self.age = a
        self.__weight = w
    def speak(self):
        print("Test model: ",self.name,self.age, self.__weight)

接着,引用上面的代码:

import testModel
testModel.Test("tom", 0, 1).speak()
# Test model:  tom 0 1

python程序打包

  • 新建一个文件夹testPackages;
  • testPackages下新建一个空文件__init__.py,声明这是一个python包
  • testPackages下新建一个空文件testModel.py,用于存放函数代码
testPackages/
        ├── __init__.py
        └── testModel.py

接着,引用上面的代码:

from testPackages import testModel
testModel.Test("tom", 0, 1).speak()
# Test model:  tom 0 1

__init__.py文件的作用

__init__.py的作用就是申明这是一个包;

每次导入包之前都会先执行__init__.py,因此可以在其中申明一些定义,比如变量或接口;

下面我们看一个__init__.py的使用例子

testPackages/
        ├── __init__.py
        ├── add.py
        └── testModel.py

add.py

def add(a, b):
    return a + b

__init__.py

import testPackages.add
add = testPackages.add.add

接着,引用上面的代码:

import testPackages
testPackages.add(1,2)
# 3

构建python包

使用setuptools构建python包

packaging_tutorial/
├── LICENSE
├── pyproject.toml  #使用什么工具(pip或build)构建项目
├── README.md
├── src/
│   └── example_package/
│       ├── __init__.py
│       └── example.py
└── tests/  #例子数据

pyproject.toml

[build-system]
requires = ["setuptools>=42"]
build-backend = "setuptools.build_meta"

setup.py是setuptool的构建脚本,用于设置包的基本信息:名字,版本和源码地址

import setuptools
with open("README.md", "r", encoding="utf-8") as fh:
    long_description = fh.read()
setuptools.setup(
    name="testPackages",
    version="2.2.1",
    author="Author",
    author_email="author@example.com",
    description="A small example package",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="http://baidu.com/",
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    package_dir={"": "src"},
    packages=setuptools.find_packages(where="src"),
    python_requires=">=3.6",
)

setup()参数:

package_dir:字典,key是包名,value是一个文件夹;

packages:分发包需要导入的所有模块列表;可以手动输入,也可以使用find_packages函数自动寻找package_dir下的所有包或模块。

生成分发包

python3 setup.py sdist

本地安装

python3 -m pip install ./dist/testPackages-2.2.1.tar.gz

调用

from testPackages import add
add.add(1,2)
# 3
#在__init__.py构建了add = testPackages.add.add,所以可以直接使用
add(1,2)
# 3

参考 Packaging Python Projects

以上就是python程序的打包分发示例详解的详细内容,更多关于python程序打包分发的资料请关注我们其它相关文章!

(0)

相关推荐

  • 详解Python打包分发工具setuptools

    Python打包分发工具setuptools:曾经 Python 的分发工具是 distutils,但它无法定义包之间的依赖关系.setuptools 则是它的增强版,能帮助我们更好的创建和分发 Python 包,尤其是具有复杂依赖关系的包.其通过添加一个基本的依赖系统以及许多相关功能,弥补了该缺陷.他还提供了自动包查询程序,用来自动获取包之间的依赖关系,并完成这些包的安装,大大降低了安装各种包的难度,使之更加方便,将程序打包以后可以可以安装到自己的虚拟环境中,也可以上传到PyPI,这样非常方便

  • python将多个py文件和其他文件打包为exe可执行文件

    目录 1.准备好打包文件 2.下载安装Pyinstaller 3.生成.spec文件 4.配置.spec文件 5.生成exe文件 前言: 最近在学习PYQT5,感觉还挺有趣的,顺便记录一下自己的打包记录,也就当学习笔记啦,如果刚好也在学习python打包的小伙伴可以学一学哦. 1.准备好打包文件 首先准备好将要打包的工程文件(/夹).在这个文件下,我们将frame_main.py当做主程序. 2.下载安装Pyinstaller 在 cmd 中进入我们当前的python环境中,并进入当前项目的文件

  • 将Python脚本打包成MACOSAPP程序过程

    目录 安装py2app 打开终端输入pip3命令安装py2app工具 配置setup.py setup.py内有一些app信息的配置 生成app 还在此前的目录终端下输入命令 安装py2app 打开终端输入pip3命令安装py2app工具 pip3 install py2pp 安装完成后,默认会装到/Library/Frameworks/Python.framework/Versions/3.8/bin/py2applet目录下,3.8为python3的版本号,可以自己输入以下命令检查对应的版本

  • 将python项目打包成exe与安装包的全过程

    目录 一.打包Flask项目 1.1自己写个Flask 2.2 下载pyinstaller 2.3 进入到项目路径下,执行 2.4 运行exe,测试 二.使用nsis把文件夹打包成windows的安装包 2.1 下载安装nsis 2.2把dist文件夹下的run文件夹压缩成zip 2.3使用nsis把压缩包,做成windows安装文件 总结 一.打包Flask项目 1.1自己写个Flask 2.2 下载pyinstaller pip install pyinstaller 可选参数 示例 说明

  • python3.7 打包成exe程序方式(只需两行命令)

    目录 python3.7 打包成exe程序 我的py程序运行效果图 Python打包方式—Pyinstaller 安装Pyinstaller 使用Pyinstaller 注意事项 exe文件生成 python3.7 打包成exe程序 环境:pycharm2018.1+win7+python3.7 工具:pyinstaller 1.安装pyinstaller,cmd --> pip install pyinstaller 2.安装完成后,打开cmd,输入命令:pyinstaller -F  *.p

  • 基于Pyinstaller打包Python程序并压缩文件大小

    这段时间应老师的要求,给实验室写了一个基于 PyQt5 的小工具.然而源码发过去人家还不要,一定要打包成可执行软件. 那就打包呗,刚好以前对 Pyinstaller 有一点接触,就用了一下这玩意.这篇博文主要记录一下基本用法和踩得一些坑. 1. 用 Pyinstaller 打包 Python 程序 首先我们需要安装 Pyinstaller: pip install pyinstaller 用 conda 也行,不过貌似最近清华的 Anaconda 源被封了,也不知道什么时候解禁. Pyinsta

  • python程序的打包分发示例详解

    目录 引言 python程序打包 __init__.py文件的作用 构建python包 生成分发包 本地安装 调用 引言 python编程时,一部分人习惯将实现同一个功能的代码放在同一个文件: 使用这些代码只需要import就可以了: 下面看一个例子. testModel.py class Test: name = 'tom' age = 0 __weight = 0 def __init__(self,n,a,w): self.name = n self.age = a self.__weig

  • python模块shutil函数应用示例详解教程

    目录 本文大纲 知识串讲 1)模块导入 2)复制文件 3)复制文件夹 4)移动文件或文件夹 5)删除文件夹(慎用) 6)创建和解压压缩包 本文大纲 os模块是Python标准库中一个重要的模块,里面提供了对目录和文件的一般常用操作.而Python另外一个标准库--shutil库,它作为os模块的补充,提供了复制.移动.删除.压缩.解压等操作,这些 os 模块中一般是没有提供的.但是需要注意的是:shutil 模块对压缩包的处理是调用 ZipFile 和 TarFile这两个模块来进行的. 知识串

  • Python实现连接dr校园网示例详解

    目录 背景 分析 实现 背景 在校园里认证上网很麻烦需要web输入账号密码有时还会忘记web地址此时就需要一个人或者程序帮我们实现,这时我想到用python制作这个程序(初学者python代码不规范) 分析 需要分析web登录网址的浏览器头发现是get方法这就简单了,再次分析get请求发现有user_account字段,user_password字段还有ip字段mac字段这时我们的思路就来了使用curl命令直接把这个代码放到终端里运行发现是可以的 curl "http://学校认证服务器ip:8

  • Python制作可视化报表的示例详解

    大家好,我是小F- 在数据展示中使用图表来分享自己的见解,是个非常常见的方法. 这也是Tableau.Power BI这类商业智能仪表盘持续流行的原因之一,这些工具为数据提供了精美的图形解释. 当然了,这些工具也有着不少缺点,比如不够灵活,无法让你自己创建设计. 当你对图表展示要求定制化时,编程也许就比较适合你,比如Echarts.D3.js. 今天小F给大家介绍一个用Python制作可视化报表的案例,主要是使用到Dash+Tailwindcss. 可视化报表效果如下,水果销售情况一览~ Das

  • Python学习之模块化程序设计示例详解

    目录 关于模块化程序设计 水果仓库功能简介 主功能实现与程序入口 实现添加功能 实现列出所有信息功能 实现查询信息功能 实现删除信息功能 完整程序如下 关于模块化程序设计 什么是模块化程序设计? 程序设计的模块化指的是在进行程序设计时,把一个大的程序功能划分为若干个小的程序模块.每一个小程序模块实现一个确定的功能,并且在这些小程序模块实现的功能之间建立必要的联系,通过各个小模块之间的互相协作完成整个大功能实现的方法. 模块化设计程序的方法? 一般在针对实现比较复杂程序的情况下,采用的是自上而下的

  • Python OpenCV实现图形检测示例详解

    目录 1. 轮廓识别与描绘 1.1 cv2.findComtours()方法 1.2 cv2.drawContours() 方法 1.3 代码示例 2. 轮廓拟合 2.1 矩形包围框拟合 - cv2.boundingRect() 2.2圆形包围框拟合 - cv2.minEnclosingCircle() 3. 凸包 绘制 4. Canny边缘检测 - cv2.Canny() 4.1 cv2.Canny() 用法简介 4.2 代码示例 5. 霍夫变换 5.1 概述 5.2 cv2.HoughLin

  • python列表生成器常用迭代器示例详解

    目录 列表生成式基础语法 1. 使用列表生成式,一行解决for循环 2. 双层循环 3. 加判断语句,条件过滤 4. 加入函数 5. 常见几种迭代器:range. zip . enumerate . filter . reduce 列表生成式基础语法 [exp for iter_var in iterable (if conditional)] 原理: 首先迭代 iterable 里所有内容,每一次迭代,都把iterable里相应的内容放在iter_var中,再把表达式exp应用该iter_va

  • Python+pyaudio实现音频控制示例详解

    简介 PyAudio是一个跨平台的音频处理工具包,使用该工具包可以在Python程序中播放和录制音频,也可以产生wav文件等 安装 pip install PyAudio 注意:使用该命令安装时可能会报错,报错内容如下: 针对该问题,我们使用whl文件进行安装,首先在网址下面找到以下文件并下载,根据自己的python版本及计算机系统下载相应文件即可. 下载完成后,切换到文件所在目录,使用如下命令安装即可 pip3 install PyAudio-0.2.11-cp38-cp38-win_amd6

  • Python获取时间的操作示例详解

    目录 获得当前时间时间戳 获取当前时间 获取昨天日期 生成日历 计算每个月天数 计算3天前并转换为指定格式 获取时间戳的旧时间 获取时间并指定格式 pandas 每日一练 21读取本地EXCEL数据 22查看df数据前5行 23将popularity列数据转换为最大值与最小值的平均值 24将数据根据project进行分组并计算平均分 25将test_time列具体时间拆分为两部分(一半日期,一半时间) 获得当前时间时间戳 # 注意时区的设置 import time # 获得当前时间时间戳 now

  • Python常见文件操作的示例详解

    目录 从文件中读取数据 为什么要提供文件路径 逐行读取 创建一个包含文件各行内容的列表 使用文件中的内容 包含千位以上的大型文件 圆周率中包含你的生日吗 写入文件 附加到文件 从文件中读取数据 1:读取整个文件 首先创建一个文件,它包含一些文本信息,注意:如果该文件为.py文件,则再进行操作的时候可以不写路径,如果不是.py文件,则必须标明路径. 现在我们创建一个python文件,名为text.py,给他写入如下文本信息: 下面的程序打开并读取这个文件,再将其内容显示到屏幕上: with ope

随机推荐