将我们写的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

最新文章

  1. WPF 四种样式
  2. Asp.net 加载事件(转载)
  3. Linux 命令 find
  4. 4_STL设计理念_算法
  5. ZFS(一):ZFS在Debian GNU/Linux上的安装
  6. CSS的总结(选择器,伪类等...)
  7. 【二分】【高精度】Vijos P1472 教主的集合序列
  8. vmware重装系统后虚拟机实例文件*.vmdk重用
  9. springmvc中关于静态资源的放行
  10. libevent简单介绍和使用
  11. hdu 4081 Qin Shi Huang's National Road System (次小生成树的变形)
  12. python模块--ip地址转换为整数
  13. Spring @Aspect进行类的接口扩展
  14. C#去掉字符串头尾指定字符
  15. 老板怎么办,我们网站遭到DDoS攻击又挂了?
  16. linux 做了raid后,硬盘坏了更换问题
  17. Java代码审计入门篇
  18. [PyData] 03 - Data Representation
  19. 题解——Codeforces Round #507 (based on Olympiad of Metropolises) T1 (模拟)
  20. 【JavaScript】浅析JavaScript对象如何添加属性和方法

热门文章

  1. zTree实现删除树子节点
  2. Linux以列表格式显示块设备
  3. 【原】Java学习笔记028 - 集合
  4. 异常-----freemarker.core.InvalidReferenceException问题解决
  5. JAVA容器的那些事—集合
  6. 一次断电后docker问题的排解
  7. 【Luogu3444】ORK-Ploughing(贪心)
  8. Python可视化库-Matplotlib使用总结
  9. C++中不同变量、函数在内存中的内存情况《转》
  10. HTTP请求过程-域名解析和TCP三次握手建立链接