最近做个一个项目需要用到setup.py 这个构建工具来进行项目的便捷安装,把搜集到的一些资料加上个人理解整理成文章,如有错误的地方请各位大佬及时指出,小弟马上修改,下面正式进入setup.py的描述讲解.

1.因为我们要用setup.py来将我们的项目打包成一个Python包,所以首先我们需要创建一个包文件夹,该包的命名依照以下包版本的命名格式:

  N.N[.N]+[{a|b|c|rc}N[.N]+][.postN][.devN]

    解释:

  "N.N": 必须的部分,两个"N" 分别代表了主板本和副版本号.

  "[.N]": 次要版本号,可以有零或多个.

  "{a|b|c|rc}": 阶段代号,可选, a,b,c,rc  分别代表alpha, beta, candidate 和 release candidate.

  "N[.N]": 阶段版本号,如果提供, 则至少有一位主版本号, 后面可以加无限多位的副版本号.

  ".postN": 发行后更新版本号, 可选.

  ".devN": 开发期间的发行版本号, 可选.

 注意: 上面涉及到的命名中的英文字母尽量全是小写(我测试的时候是全用的小写没有出现什么问题,这个根据具体情况定吧).

2.包的版本号确定之后,需要弄清楚包里面应该包含那些文件, 一个标准的包里面应该包含CHANGES.rst , LICENSE , MANIFEST.in , README.rst , setup.py , setup.cfg , src(含有__init__.py 文件的文件夹), 可能有的文章还会介绍有别的文件,但是有这些文件基本上不会出现什么问题.

3.介绍完包中的文件之后,我们来看一下每个文件具体的作用.

  MANIFEST.in : 里面就是需要包含在分发包中的文件,也就是需要把要查找的分发的包的路径写上,例如:    

    

 include MANIFEST.in
recursive-include src/*

  setup.cfg : 文件主要用于提供setup.py 的默认参数, 我用到的是填上了pip 镜像源的地址,如果有其他的需要,可以参考https://docs.python.org/3/distutils/configfile.html    

    

[easy_install]
Index_url = http://pypi.douban.com/simple

  src : 该文件夹里面含有__init__.py 文件, 还应该含有需要打包的源代码, 主要用于setup.py 文件中的packages: find_packages() 这个参数.

  setup.py : 主要写需要安装的包的一些配置信息, 这里主要介绍一下里面常用到的一些基本的参数:

    name : 包的名称, 以后查找的时候需要根据此名称查询.

    version : 包的版本号.

    license : 程序的授权许可信息.

    description : 程序的简单描述.

    long_description : 程序的详细描述.

    auther : 程序的作者.

    auther_email : 程序作者的邮箱.

    packages : 需要处理的包目录 (包含__init__.py 文件的文件夹), 一般可以采用find_packages() 这个函数, 它会默认在和setup.py 同一目录下搜索各个含有__init__.py 的包,也可以排除一些特定的包, find_packages(exclude=[" *.text", ....]).

    install_requires : 需要安装的依赖包, 这个的值应该是一个list列表.

    download_url : 程序的下载地址.

    package_data : 指定包内需要包含的数据文件.

    data_files : 打包时需要打包的数据文件, 如图片, 配置文件等.

    setup_requires : 指定运行setup.py 这个文件本身所依赖的包.

    include_package_data : 该参数设置为True 时, 自动添加包中受版本控制的数据文件.( 这个我也没有太搞懂, 不过一般都会设置成True, 有大神明白的可以教教我,感谢! )

    zip_safe : 该参数决定了包是否作为一个zip压缩后的egg 文件安装,还是作为一个以 .egg 结尾的目录安装. 因为有些工具不支持zip压缩文件, 而且压缩后的包也不方便调试, 所以建议将其设置为False.

    entry_points : 发现动态服务和插件, 在entry_points 中, console_scripts 指明了命令行工具的名称, 如下面的代码示例一样, 等号前面指明了工具包的名称, 等号后面的内容指明了程序的入口地址, 这里可以有多条记录, 这样一个项目就可以制作多个命令行工具了.当我们想要启动对应的程序时, 只需要输入等号前面的工具包的名称即可.  

      

 setup(
# .....
entry_points={
"console_scripts": [
"service_name=service.main",
.....................
]
} )

4.以上的我整理的内容就可以完成一般常规项目的setup.py 文件的制作了,如果需要添加具体别的功能参数可以参考以下网站:

  http://blog.konghy.cn/2018/04/29/setup-dot-py/

  https://docs.python.org/3/distutils/setupscript.html

    

简单使用setup.py来安装Python项目的更多相关文章

  1. python 利用 setup.py 手动安装第三方类库

    python 利用 setup.py 手动安装第三方类库 由于我在mac使用时,装了python3,默认有python2的环境,使用 pip 安装第三方类库时,老是安装到 python2的环境上: 在 ...

  2. python 使用 setup.py 方式安装及包的卸载

     安装:         可通过 --home 或 --prefix 指定安装目录 --prefix=xx/xxx    选择安装目录 --record files.txt   记录所有安装文件的路径 ...

  3. python 编写简单的setup.py

    学习python也已经有一段时间了,发现python作为脚本语言一个很重要的特点就是简单易用,而且拥有巨多的第三方库,几乎方方面面的库都有,无论你处于哪个行业,想做什么工作,几乎都能找到对应的第三方库 ...

  4. python 利用 setup.py 手动安装django_chartit

    手动安装django_chartit库 1 下载压缩包 2 解压到python安装目录下,文件夹名为django_chartit,并检查文件夹下是否有setup.py文件 3 在cmd中进入djang ...

  5. 对于python setup.py install安装的包如何卸载

    easy_install 安装 卸载命令 easy_install -m package-name setup.py安装 帮助你纪录安装细节方便你卸载 python setup.py install ...

  6. Linux 问题 卸载setup.py方式安装的python包

    python ./setup.py install --record install.txt  cat install.txt | xargs rm -rf

  7. ez_setup.py(安装python下setuptools用)

    #!python"""Bootstrap setuptools installation If you want to use setuptools in your pa ...

  8. Linux下离线安装python项目的依赖包

    第一步新建一个site-packages文件夹,把python项目有需要的依赖包名称导出到site-packages下的requirements.txt中 $ pip3 freeze > req ...

  9. 如何制作python安装模块(setup.py)

    Python模块的安装方法: 1. 单文件模块:直接把文件拷贝到$python_dir/lib 2. 多文件模块,带setup.py:python setup.py install 3. egg文件, ...

随机推荐

  1. 主机,路由器,应用程序,sockets api的关系

  2. POJ 2486 Apple Tree ——(树型DP)

    题意是给出一棵树,每个点都有一个权值,从1开始,最多走k步,问能够经过的所有的点的权值和最大是多少(每个点的权值只能被累加一次). 考虑到一个点可以经过多次,设dp状态为dp[i][j][k],i表示 ...

  3. CF1214C

    CF1214C 题意: 给你一个括号序列,问你时候能仅移动相邻的两个元素,使括号序列合法. 解法: 可以先考虑普通括号序列怎么做 这道题只交换相邻的两个元素,所以如果中间左括号和右括号的差值大于2时, ...

  4. mysql数据库的还原及常见问题解决

    例如:需要还原的数据库脚本文件为test.sql,脚本中已包含数据库的创建,test.sql所在目录为/home 1.常用source命令 进入mysql数据库控制台,如mysql -uroot -p ...

  5. ArcGIS超级工具-征地部标准坐标导出导入 SPTOOLS

    ArcGIS超级工具简称SPTOOLS 1.1征地部标准坐标导出 界面如下: 操作视频: https://weibo.com/tv/v/HvpNBrfeq?fid=1034:4374872936357 ...

  6. [Oracle]关于回滚段的一些转贴摘录

    ORACLE 回滚段 回滚段概述 回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值).回滚段的头部包含正在使用的该回滚段事务的信息.一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段 ...

  7. layer快速点击会触发多次回调

    场景还原 测试同学反馈点击了一次操作,为什么会有两条操作记录? 我:???? 排查思路 查看日志,看一下是不是发了两次请求,果不其然啊: 并发了,同一时间发送了两次请求,出现了脏写. 原因 系统的co ...

  8. 如何从社区的patchwork下载补丁并应用到当前内核源码?

    1. 下载 wget http://patchwork.ozlabs.org/series/111111/mbox 2. 打补丁 git am mbox

  9. python3 @classmethod 和 @staticmethod 的区别

    如果您将某个东西定义为classmethod,这可能是因为您打算从类而不是类实例中调用它. 定义类方法的几种方式: 常规方式                       : 需要self隐士传递当前类 ...

  10. 启动mongodb报错,无法连接mongodb

    报错原因如下: MongoDB shell version v3.4.2 connecting to: mongodb://127.0.0.1:27017 --01T12:: W NETWORK [t ...