『Python』setup.py简介
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.py简介的更多相关文章
- python 利用 setup.py 手动安装第三方类库
python 利用 setup.py 手动安装第三方类库 由于我在mac使用时,装了python3,默认有python2的环境,使用 pip 安装第三方类库时,老是安装到 python2的环境上: 在 ...
- python 利用 setup.py 手动安装django_chartit
手动安装django_chartit库 1 下载压缩包 2 解压到python安装目录下,文件夹名为django_chartit,并检查文件夹下是否有setup.py文件 3 在cmd中进入djang ...
- python 使用 setup.py 方式安装及包的卸载
安装: 可通过 --home 或 --prefix 指定安装目录 --prefix=xx/xxx 选择安装目录 --record files.txt 记录所有安装文件的路径 ...
- python安装setup.py问题
一:python下setuptools安装( No module named setuptools 解决方案) 1. 下载:在它的官网可以下载到安装包:https://pypi.python.org/ ...
- Python中setup.py一些不为人知的技巧
http://python.jobbole.com/80912/ 在我开始之前,我想先说清楚我将要解释的是些“窍门”.他们不是“最好的做法”,至少在一种情况下是不可取的. 说到不可取的做法,我会适时写 ...
- python带setup.py的包的安装
如psutil-4.2.0.tar.gz tar -zxvf psutil-4.2.0.tar.gz psutil-4.2.0 cd psutil-4.2.0 sudo python setup.py ...
- python 通过setup.py安装和卸载python软件包
安装:sudo python setup.py install 卸载:sudo python setup.py install --record log sudo cat log | sudo xar ...
- python的setup.py文件
最近工作需要,用Cython写了*.pyx扩展,并将其编译成C文件,最后转换为so扩展,供python引用使用 distutils 编译,建立一个setup.py 的脚本from distutils. ...
- python的setup.py文件及其常用命令
编写setup.py文件,获取帮助:python setup.py --help-commands [python] Standard commands: build ...
随机推荐
- 深度学习课程笔记(二)Classification: Probility Generative Model
深度学习课程笔记(二)Classification: Probility Generative Model 2017.10.05 相关材料来自:http://speech.ee.ntu.edu.tw ...
- E:Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
出现这个问题的原因可能是有另外一个程序正在运行,导致资源被锁不可用.而导致资源被锁的原因,可能是上次安装时没正常完成,而导致出现此状况. 解决方法:输入以下命令 sudo rm /var/cache/ ...
- 光学定位点(mark点)
Mark点是使用机器焊接时用于定位的点. 表贴元件的pcb更需要设置Mark点,因为在大批量生产时,贴片机都是操作人员手动或者机器自动寻找Mark点进行校准.极少数不设置Mark点也可以,操作非常 ...
- unity shader base pass and additional pass
[Unity Shaders]Shader中的光照,shadersshader 写在前面 自己写过Vertex & Fragment Shader的童鞋,大概都会对Unity的光照痛恨不已 ...
- CentOS6.5下搭建LAMP+FreeRadius+Daloradius Web管理和TP-LINK路由器、H3C交换机连接,实现,上网认证和记账功能
什么是RADIUS服务: RADIUS:(Remote Authentication Dial In User Service)中文名为远程用户拨号认证服务,简称RADIUS,是目前应用最广泛的AAA ...
- webpack2的配置属性说明entry,output,state,plugins,node,module,context
Webpack2配置属性详解 webpack说明 webpack是前端构建的一个核心所在,如果说后端构建就是把高级语言代码编译成机器码,那么前端的构建就是重新组合原有的代码,虽然并不编译成机器码,但实 ...
- The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
关于出现这个·问题的原因貌似也是多种多样的? 在stack overflow上的帖子如下:https://stackoverflow.com/questions/43186315/tomcat-404 ...
- Anroid 搭建Maven私服(Android Studio)
一.场景 ① 公司中有多个项目,多人开发,开发中的某一模块需要被其他几个项目的模块所依赖,最简单粗暴的方式就是打包成aar或者jar文件逐个拷贝到libs下进行依赖,可是这种方式太过于麻烦,而且需要每 ...
- HDU 3949 XOR
3949 思路: 线性基,线性基的每个元素尽可能小 将k转换成二进制与排好序的线性基相对应 如果线性基的个数小于n,说明n个元素线性相关,所以可以构成0,k要减1 代码: #pragma GCC op ...
- lua --- 函数的可变参数
主要掌握: 1>虚变量 --- 一个下划线 2>lua将函数的可变参数放在一个叫 arg 的表中,除了参数以外,arg表中还有一个域n表示参数的个数. do function fun(x, ...