将我们写的Python程序发布成包后,可以使其能够安装使用。

在项目上测试的时候,某些情况下,可以将Python打包,然后上传到测试服务器,安装测试。

setuptools是常用的打包工具。

一个简单的setup.py文件如下:

from setuptools import setup, find_packages
setup(
name = "my_demo",
version = "0.1",
packages = find_packages()
)

其中,name是包的名字,version是版本。

给packages指定find_packages(),意为包括在本目录下的所有Python包。

什么是Python包呢?在Python 3.2及更早版本中,只有包含__init__.py文件才能识别为Python包。

那要是不想包含某些包呢?给find_packages指定exclude参数即可。

那如果我们想将数据文件也添加进来呢?有以下方法(以下:package_data:数据文件,即一些txt或者dat文件 ):

方法一

在使用版本控制的情况下(先包含全部数据文件,再指定去除):

packages = find_packages('src'),  # 包含所有src目录下的package
package_dir = {'':'src'}, include_package_data = True, # 包含所有版本控制的内容 # 排除所有 README.txt
exclude_package_data = { '': ['README.txt'] }

方法二(直接指定包含哪些数据文件):

packages = find_packages('src'),  # 包含所有src中的包
package_dir = {'':'src'}, # 告诉distutils包都在src下 package_data = {
# 如果包中含有.txt文件,则包含它
'': ['*.txt'],
# 包含demo包data文件夹中的 *.dat文件
'demo': ['data/*.dat']
}

其他的一些常用参数:

zip_safe,指定boolean选项,控制项目能否直接通过压缩文件安全安装。

install_requires:安装依赖

entry_points: 创建控制台脚本 详情

等等

可以使用命令:

python setup.py bdist_egg

来创建egg文件,egg文件可以跨平台,便于使用pip安装。

也可以使用命令:

python setup.py sdist

来创建源发布版本,此后可通过pip install来安装生成的tar.gz包

其他一些setup.py文件的参数选项:
 python setup.py build     #编译
 python setup.py install    #安装
 python setup.py sdist      #制作分发包
 python setup.py bdist_wininst    #制作windows下的分发包
 python setup.py bdist_rpm

参考:

https://setuptools.readthedocs.io/en/latest/setuptools.html

Python打包工具setuptools的使用的更多相关文章

  1. $python打包工具pyinstaller的用法

    pyinstaller是一个很好用的python打包工具,在Windows环境下可以将python脚本打包成一个exe可执行文件,并且脚本中所依赖的各种第三方库在打包时候都会被统一处理到一起,这样打包 ...

  2. python打包工具distutils、setuptools分析

    在上一篇博文中总结了python中导入包,安装包一条完整的线路.其中有一个有意思的知识点,安装包的方式有很多种,模块和包管理中打包,发布,安装也是值得研究的内容. python中安装包的方式有很多种: ...

  3. python打包工具distutils、setuptools的使用

    python中安装包的方式有很多种: 源码包:python setup.py install 在线安装:pip install 包名(linux) / easy_install 包名(window) ...

  4. Python打包之setuptools

    参考链接1 参考链接2 参考链接3 一.setuptools介绍 Setuptools是Python Distutils的加强版,使开发者构建和发布Python包更加容易,特别是当包依赖于其他包时.用 ...

  5. Python打包工具

    打包Python应用,使用工具: 1.Linux和Windows下,使用pyinstaller pyinstaller -F -w XXX.py 在当前文件夹下生成两个文件夹:build .dist ...

  6. python打包工具pyinstaller的使用

    安装PyInstaller pip install pyinstaller 安装完后,检查安装成功与否: pyinstaller --version 安装成功后,就可以使用下面的命令了: pyinst ...

  7. python打包工具 --- pyinstaller

    安装 安装python并添加到环境变量之后,在终端执行如下命令即可: pip install pyinstaller 截图如下: 若安装失败,可到: https://www.lfd.uci.edu/~ ...

  8. Python 打包工具cx_freeze 问题记录及解决办法

    在节前的最后一天,解决了打包过程中遇到的所有问题,可以成功运行了!真是个好彩头,希望新的一年一切顺利! 以下是在使用cx_freeze过程中遇到的问题及解决办法(Win7) 问题描述:运行exe,启动 ...

  9. python打包工具 cx_Freeze介绍

    原理 Python 脚本在装有 Python 的系统中可以直接双击运行,但绝大多数普通用户并没有配置此类环境,而编译为可执行二进制文件后,用户无需预先安装 Python 及依赖库即可像运行普通程序一样 ...

随机推荐

  1. RAPIDIO高速串行协议

    RapidIO是由Motorola和Mercury等公司率先倡导的一种高性能. 低引脚数. 基于数据包交换的互连体系结构,是为满足和未来高性能嵌入式系统需求而设计的一种开放式互连技术标准.RapidI ...

  2. 对于多线程下Servlet以及Session的一些理解

    今天,小伙伴突然问到了Servlet是不是线程安全的问题.脑子当时一卡壳,只想到了单实例多线程.这里做一些总结. Servlet体系是建立在Java多线程的基础之上的,它的生命周期是由Tomcat来维 ...

  3. ThreadPoolExecutor源码分析

    ThreadPoolExecutor是Java自带线程池FixedThreadPool(固定大小). SingleThreadExecutor(单线程).CacheThreadPool (无限大)的具 ...

  4. PHPStorm 最新版 去掉参数提示 parameter name hints

    最新的phpstorm有个默认开启的参数名和类型提示功能, 这对于开发有很大的帮助,但是对于有些同学来说,刚开始可鞥不是很习惯,所以就需要把他给关闭. 在 配置面板中搜索 parameter name ...

  5. CYQ.data 框架结构

    -------------------------V5.0开始(刚开始过滤版本:有些更新功能迁到V4,所以记录在V4那)-----------------------------7:Insert方法增 ...

  6. 洛谷 P2401 不等数列

    其实有两种方法来解这道题# 第一种:找规律(非正经) 一看,这玩意像是个杨辉三角,还左右对称呢 因为新插入一个数$n$,有$n+1$个位置可以选,所以总数就乘$n+1$,对应的$f[n+1][i]$也 ...

  7. 九度oj题目1002:Grading

    //不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...

  8. 关于各种文件用Editplus的方式打开出现“向程序发送命令时出现问题”的解决方法

    其实网上有很多解决方法,但是我试过都没有用. 我出现这个错误的原因是因为我的Editplus是以管理员的方式运行的,所以解决的办法有两种: 一.修改Editplus的兼容性,方法如下: 首先在Edit ...

  9. Django+xadmin打造在线教育平台(二)

    三.xadmin后台管理 3.1.xadmin的安装 django2.0的安装(源码安装方式): https://github.com/sshwsfc/xadmin/tree/django2 把zip ...

  10. passwd命令使用

    2018-03-01  10:01:06 例1:passwd username 直接修改用户的密码普通用户可以且只能修改自己的密码,root用户可以修改任何人的密码[root@localhost ~] ...