一.setuptools

- 官方文档: Building and Distributing Packages with Setuptools
- 中文文档: Python包管理工具setuptools详解

1.使用过程

  1. 编辑: 先在项目主目录下编辑setup.py,
  2. 打包: python setup.py sdist
  3. 安装: sudo python setup.py install (--record files.txt)
  4. 卸载: sudo cat files.txt | sudo xargs rm -rf

2. setuptools工具的setup.py的模板

  1. from setuptools import setup, find_packages
  2. setup(
  3. name="HelloWorld",
  4. version="0.1",
  5. packages=find_packages(),
  6. scripts=['say_hello.py'],
  7.  
  8. # Project uses reStructuredText, so ensure that the docutils get
  9. # installed or upgraded on the target machine
  10. install_requires=['docutils>=0.3'],
  11.  
  12. package_data={
  13. # If any package contains *.txt or *.rst files, include them:
  14. '': ['*.txt', '*.rst'],
  15. # And include any *.msg files found in the 'hello' package, too:
  16. 'hello': ['*.msg'],
  17. },
  18.  
  19. # metadata for upload to PyPI
  20. author="Me",
  21. author_email="me@example.com",
  22. description="This is an Example Package",
  23. license="PSF",
  24. keywords="hello world example examples",
  25. url="http://example.com/HelloWorld/", # project home page, if any
  26.  
  27. # could also include long_description, download_url, classifiers, etc.
  28. )

声明依赖包的语法:

This syntax consists of a project’s PyPI name, optionally followed by a comma-separated list of “extras” in square brackets, optionally followed by a comma-separated list of version specifiers.

A version specifier is one of the operators <, >, <=, >=, == or !=, followed by a version identifier.

Tokens may be separated by whitespace, but any whitespace or nonstandard characters within a project name or version identifier must be replaced with -.

其它例子:

  1. docutils >= 0.3
  2.  
  3. # comment lines and \ continuations are allowed in requirement strings
  4. BazSpam ==1.1, ==1.2, ==1.3, ==1.4, ==1.5, \
  5. ==1.6, ==1.7 # and so are line-end comments
  6.  
  7. PEAK[FastCGI, reST]>=0.5a4
  8.  
  9. setuptools==0.5a7

详情可参考官方说明:Declaring Dependencies

二.Python项目的打包、发布和部署的常用方法比较

  1. 1. distutils - python自带的基本安装工具, 适用于非常简单的应用场景使用, 不支持依赖包的安装
  2.   通过distutils来打包,生成安装包,安装python包等工作,需要编写名为setup.py python脚本文件。
  3.  
  4. 2. setuptools - 针对 distutils 做了大量扩展, 尤其是加入了包依赖机制。不支持python3,安装完setuptools后会有easy_install
  5.  
  6. 3. distribute - 类似于setuptools,支持python3,安装完distribute后会有easy_install
  7.  
  8. 4. easy_install - setuptools distribute 自带的安装脚本, 也就是一旦setuptoolsdistribute安装完毕, easy_install 也便可用了。
  9.  
  10. 5. pip - 目标是取代easy_installeasy_install 有很多不足: 安装事务是非原子操作, 只支持 svn, 没有提供卸载命令, 安装一系列包时需要写脚本; pip 解决了以上问题, 已俨然成为新的事实标准, virtualenv 与它已经成为一对好搭档;
  11.  
  12. 6. distutils2 - setuptools distribute 的诞生是因为 distutils 的不济, 进而导致目前分化的状况。它将成为 Python 3.3 的标准库 packaging , 并在其它版本中以distutils2 的身份出现; 换句话说, 它和 pip 将联手结束目前混乱的状况。
  13.  
  14. 7. virtualenv - 用来创建隔离的python环境,处理python环境的多版本和模块依赖。

常识
1. sudo apt-get install 安装的package存放在 /usr/lib/python2.7/dist-packages目录中
2. pip 或者 easy_install安装的package存放在/usr/local/lib/python2.7/dist-packages目录中
3. 手动从源代码安装的package存放在site-packages目录中

参考:

python项目打包发布总结

[Python] 项目打包发布的更多相关文章

  1. [转]Python依赖打包发布详细

    Python依赖打包发布详细   http://www.cnblogs.com/mywolrd/p/4756005.html 将Python脚本打包成可执行文件   Python是一个脚本语言,被解释 ...

  2. Java学习之道:Java项目打包发布

    Java项目打包发布 如果只想发布为一个可执行的jar包,使用eclipse的Export功能就可以了 使用eclipse的Export功能,将项目中的所有package打包为一个pet.jar文件, ...

  3. VS2010下创建的VB.NET项目打包发布安装包的流程

    VS2010下创建的VB.NET项目打包发布安装包的流程 参考:http://blog.csdn.net/liuyanlinglanq/article/details/8609675  关于relea ...

  4. 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片)

    解决 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片) 1.当我们写了一个Python的项目时,特别是一个GUI项目,我们特备希望它能成为一个在Windows系统可执行的EXE文件 ...

  5. SpringBoot系列三:SpringBoot基本概念(统一父 pom 管理、SpringBoot 代码测试、启动注解分析、配置访问路径、使用内置对象、项目打包发布)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.了解SpringBoot的基本概念 2.具体内容 在之前所建立的 SpringBoot 项目只是根据官方文档实现的一个基础程 ...

  6. Java项目打包发布

    Java项目打包发布 如果只想发布为一个可执行的jar包,使用eclipse的Export功能就可以了 使用eclipse的Export功能,将项目中的所有package打包为一个pet.jar文件, ...

  7. Vue项目打包发布后CSS中的背景图片不显示

    相信有很多同学在学习vue的刚开始都遇到过项目打包发布后发现CSS中的背景图片不显示,具体如何解决只需要更改bind的配置即可 修改 build/utils.js 中的 generateLoaders ...

  8. Python依赖打包发布详细

    http://www.cnblogs.com/mywolrd/p/4756005.html 将Python脚本打包成可执行文件   Python是一个脚本语言,被解释器解释执行.它的发布方式: .py ...

  9. 利用pyinstaller将python脚本打包发布

    之前写了一个小工具,将excel配置表转换为json.xml.lua等配置文件.最近在学习egret,正好需要转换配置文件,刚好就用上了.然而当我想把工具拷到工作目录时,就发愁了.之前我为了方便扩展, ...

随机推荐

  1. java中使用Ehcache缓存数据

    知识点:在java项目中,使用ehcache缓存数据 参考博客:http://www.cnblogs.com/jingmoxukong/p/5975994.html ()概述 Ehcache是一个纯J ...

  2. 解题报告:hdu1159 common consequence LCS裸题

    2017-09-02 17:07:42 writer:pprp 通过这个题温习了一下刚学的LCS 代码如下: /* @theme:hdu1159 @writer:pprp @begin:17:01 @ ...

  3. 位运算 进制转化 STL中bitset用法

    2017-08-17 16:27:29 writer:pprp /* 题目名称:输入十进制以二进制显示 程序说明:同上 作者:pprp 备注:无 日期:2017/8/17 */ #include &l ...

  4. iview--2

    安装iview 接下来进行配置 按照手册 https://www.iviewui.com/docs/guide/start 引入iView 打开我的项目,出现了这么多的错 解决这个问题的办法 如果你用 ...

  5. C3 文件IO:APUE 笔记

    C3:文件IO 1 引言 本章描述的函数被成为不带缓冲的IO,涉及5个函数:open.read.write.lseek.close. 文件控制:dup.sync.fsync.fdatasync.fcn ...

  6. DNS和Bind配置指南

    /////////////////////////////目录//////////////////////////////////////一.DNS原理相关二.使用bind搭建最简单的DNS服务器三. ...

  7. 使用jquery.jqprint.js 实现的打印功能,IE9不能进行打印预览、火狐打印空白界面

    提示的内容:SCRIPT438: 对象不支持“ExecWB”属性或方法 首先解决IE9不能打印预览的问题: 查找了一大推资料 ,有两种说法:一种是IE的安全性级别太高:一种是需要安装什么   微软we ...

  8. 自学数据库建模工具--powerdesigner

    网上找了个英文的,版本感觉有点旧12的,但还好英语还行,摸索了一下功能,大概截了几张图,感觉优点:1总共有物理模型pdm,概念模型cdm,业务模型bdm 可以互转,逻辑清晰   2表与表之前的联系,建 ...

  9. 第八天 RHEL7.2 文件权限管理(第一部分)

    一.文件的基本权限 文件有三种访问方式限制访问权限 第一种:文件所有者的访问权限 第二种:文件所有者同组的访问权限 第三种:其他人访问权限 当使用ls -l 或ll命令时,可查看此三种权限 在权限描述 ...

  10. 解决SecureCRT下spark-shell中scala无法删除问题

    转自:http://blog.csdn.net/huanbia/article/details/51318278 问题描述 当使用SecureCRT来打开Spark-shell的时候,有时会出现如下问 ...