setup.py应用场合

网上见到其他人这样介绍:

假如我在本机开发一个程序,需要用到python的redis、mysql模块以及自己编写的redis_run.py模块。我怎么实现在服务器上去发布该系统,如何实现依赖模块和自己编写的模块redis_run.py一起打包,实现一键安装呢?同时将自己编写的redis_run.py模块以exe文件格式安装到python的全局执行路径C:\Python27\Scripts下呢?在这种应用场景下,pip工具似乎派不上了用场,只能使用python的构建工具setup.py了,使用此构建工具可以实现上述应用场景需求,只需在 setup.py 文件中写明依赖的库和版本,然后到目标机器上使用python setup.py install安装。

可以看到其目的就是方便我们安装代码:可以一体化的安装依赖包,并记录生成包相关信息,方便大规模部署,故对于开发者而言,编写python的第三方库,最重要的事情之一就是编写setup.py了。

使用setup例子

我们建立一个名为demo的空白文件夹,在里面创建setup.py文件,录入如下代码:

from setuptools import setup, find_packages

setup(

name = "demo",

version = "0.1",

packages = find_packages(),

)

运行命令:

python setup.py bdist_egg

此时查看目录树:

│  setup.py

├─build

│  └─bdist.win-amd64

├─demo.egg-info

│      dependency_links.txt

│      PKG-INFO

│      SOURCES.txt

│      top_level.txt

└─dist

demo-0.1-py3.6.egg

其中dist目录下即为打包好的egg文件,可以将尾缀改为zip并解压,内部是一系列自动生成的文件,可以自行查阅功能,

│  demo-0.1-py3.6.zip

└─EGG-INFO

dependency_links.txt

PKG-INFO

SOURCES.txt

top_level.txt

zip-safe

如果我们的生成命令使用的是:

python setup.py sdist

生成的将会是tar.gz文件,解压后直接包含setup.py文件,我们使用python setup.py install运行该文件可以直接将包拷贝到python工作目录下,方便直接调用。

在项目Mask_RCNN中,我们最终可以在anaconda目录中找到如下文件,

其对应的安装选项如下,可以一窥setup的效用,

setup(

name='mask-rcnn',

version='2.1',

url='https://github.com/matterport/Mask_RCNN',

author='Matterport',

author_email='waleed.abdulla@gmail.com',

license='MIT',

description='Mask R-CNN for object detection and instance segmentation',

packages=["mrcnn"], # setup.py同级目录下文件夹mrcnn中含有__init__.py文件

install_requires=install_reqs,

include_package_data=True,

python_requires='>=3.4',

long_description="""This is an implementation of Mask R-CNN on Python 3, Keras, and TensorFlow.

The model generates bounding boxes and segmentation masks for each instance of an object in the image.

It's based on Feature Pyramid Network (FPN) and a ResNet101 backbone.""",

classifiers=[

"Development Status :: 5 - Production/Stable",

"Environment :: Console",

"Intended Audience :: Developers",

"Intended Audience :: Information Technology",

"Intended Audience :: Education",

"Intended Audience :: Science/Research",

"License :: OSI Approved :: MIT License",

"Natural Language :: English",

"Operating System :: OS Independent",

"Topic :: Scientific/Engineering :: Artificial Intelligence",

"Topic :: Scientific/Engineering :: Image Recognition",

"Topic :: Scientific/Engineering :: Visualization",

"Topic :: Scientific/Engineering :: Image Segmentation",

'Programming Language :: Python :: 3.4',

'Programming Language :: Python :: 3.5',

'Programming Language :: Python :: 3.6',

],

keywords=["image instance segmentation object detection mask rcnn r-cnn tensorflow keras", ]

)

其他资料

python中setup是什么意思_『Python』setup.py简介相关推荐

  1. python中numpy数组的合并_基于Python中numpy数组的合并实例讲解

    基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...

  2. python中for语句的使用_对Python中for复合语句的使用示例讲解

    当Python中用到双重for循环设计的时候我一般会使用循环的嵌套,但是在Python中其实还存在另一种技巧--for复合语句. 简单写一个小程序,用于延时循环嵌套功能如下: #!/usr/bin/p ...

  3. python中mod是什么意思_【python中,mod_python到底做了些什么呢?】mod python 教程

    python 编程小白 ,不会用doctest 请大神指教怎么用!! >>> >>> def is_between(v, lower, higher): ...   ...

  4. python中二进制和文本不同_关于Python字符编码与二进制不得不说的一些事

    二进制 核心思想: 冯诺依曼 + 图灵机 电如何表示状态,才能稳定? 计算机开始设计的时候并不是考虑简单,而是考虑能自动完成任务与结果的可靠性, 简单始终是建立再稳定.可靠基础上 经过尝试10进制,但 ...

  5. python中turtle怎么确定坐标_关于Python turtle库使用时坐标的确定方法

    关于Python turtle库使用时坐标的确定方法 想画一个比较复杂的图像,而且还想用turtle画,最让人想退却的是无规律的笔势和繁多的坐标,但既然没有按奈住冲动的心,那我告诉你一个比较笨的方法吧 ...

  6. python中turtle画简单表情_用Python画QQ表情中的滑稽脸

    用Python中的turtle库写的代码,写了很久终于写的比较满意了.先看一下效果图[手动滑稽] 话不多讲,直接干货吧 代码: import turtle as t def moveto(x, y): ...

  7. python中sample是什么意思_基于Python中random.sample()的替代方案

    python中random.sample()方法可以随机地从指定列表中提取出N个不同的元素,但在实践中发现,当N的值比较大的时候,该方法执行速度很慢,如: numpy random模块中的choice ...

  8. python中的class怎么用_对python 中class与变量的使用方法详解

    python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding ...

  9. python中矩阵的表示方法_关于Python表示矩阵的方法详解

    这篇文章主要介绍了Python表示矩阵的方法,结合具体实例形式分析了Python表示矩阵的方法与相关操作注意事项,需要的朋友可以参考下 本文实例讲述了Python表示矩阵的方法.分享给大家供大家参考, ...

最新文章

  1. 【C语言】学习笔记3——字符串
  2. 子组件自动执行方法_【自动化程序的最佳实践】 04 自动化程序的生命周期
  3. Python3之redis使用
  4. 谈谈java的BlockingQueue
  5. webpack 环境安装
  6. linux关机_Linux系统管理:开机启动流程(一)
  7. ajax请求提示html状态码302,快速解决ajax请求出错状态码为0的问题
  8. python pymongo+networkx 实现mongo数据血缘关系可视化
  9. 从《四驱兄弟》到“联想中国”
  10. datatables.js 简单使用--多选框和服务器端分页
  11. [css] 请你解释下什么是浮动和它的工作原理是什么?同时浮动会引起什么问题?
  12. 华为IoT平台NB编解码插件开发详细教程【上篇】
  13. 服务器cpu_服务器CPU与GPU协同运算加速三巨头竞争
  14. 什么是创新型人才,创新型企业?
  15. JSK-1 A+B+C问题【OJ测试】
  16. [msi]安装包无法安装,提示没有找到源文件xxx.cab
  17. VMWareStation10 密钥
  18. HBase数据库结构、存储理解(举例解释、容易理解、深入浅出)
  19. Java用Freemarker 生成word文档
  20. ORAN专题系列-1:什么是开放无线接入网O-RAN

热门文章

  1. Adobe Acrobat更改注释的作者姓名
  2. 基于QT的网络视频会议系统---KNVM
  3. 2-3 打折促销* (10 分)
  4. 软件测试教程之手机软件测试方法
  5. PKUSC2016酱油记
  6. Android之自定义Dialog(Layout引入布局)
  7. SourceTree配置代理详细方法
  8. python报时功能_python3多线程实现一个语音报时,定时关机功能的应用
  9. SpringBoot配置全局的异常捕获
  10. EAS BOS 报表开发