张扬网站建设,站群搭建,怀化网站排名优化,静态网页框架用什么软件做python中的distutils包主要用创建共享包#xff0c;安装包#xff0c;在平时安装python模块的时候#xff0c;使用的命令如下#xff1a; python setup.py install 其实以上代码就是distuitls包提供的功能#xff0c;直接使用setup.py来进行安装一个包#xff0c;在用这种…
python中的distutils包主要用创建共享包安装包在平时安装python模块的时候使用的命令如下 python setup.py install 其实以上代码就是distuitls包提供的功能直接使用setup.py来进行安装一个包在用这种方式安装包之后就可以直接在系统中进行import这个模块。 主要就是在安装的时候已经将这个包install到python的类库中从而可以直接进行import也相当于将这个模块的路径放到了python寻找模块的路径当中。 此文主要用来讲述如何使用python中的distutils模块来制作一个安装包。
1、 几个关键参数作用
packages由字符串组成的一个list即disutils需要操作的python包
package_dir包所对应的目录名称一个字典格式
scripts单独的script文件用来创建和插入的字符串组成的列表
data_files需要插入的数据文件一个list主要用来放一些配置文件等在list中的每个记录中都是一个tuple目录文件目录表示要插入的地方文件表示为需要把哪些文件插入到目录中data_file的文件名称是不能改变的。 2、 关于为啥要使用包
在进行打包的时候有两种使用方式一种是使用包的方式也就是我们所要讲的方式一种是使用模块的方式一般使用模块的时候最好是只有一个模块或者这几个模块在同一个包中。
在有多个模块需要打包的时候而且多个模块在不同的包中那么就可以使用包的方式进行打包也就是指定packages的方式当使用package的方式的时候在package的目录中必须存在一个文件为__init__.py表示这个是一个包其中的内容可以为空。
3、根据目录结构创建setup.py
以下为例子中的目录结构如下所示 [rootFTP ~]# tree ansible
ansible
|-- README
|-- bin
| -- ansible
|-- lib
| -- ansible
| -- __init__.py
|-- library
| -- kel
-- setup.py4 directories, 5 files 根目录为ansible然后在里面具有setup.py文件有一个包为lib/ansible/在这个包里有指定的init文件从而这个是一个包还有个一个是脚本文件为bin/ansible在其中类库未library/kel从而可以写出其中的setup.py文件内容如下 from distutils.core import setupsetup(nameansible,version1.0,descriptionthis is a test of the disutils,packages[ansible],package_dir{ansible:lib/ansible},data_files[(/usr/share/,[library/kel]),],scripts[bin/ansible]
)
以上表示的意思为name表示此模块的名称version表示版本description表示为一个描述信息packages表示包package_dir表示包对应的目录data_files表示需要拷贝的配置文件上述表示拷贝library目录下的kel文件到/usr/share目录中scripts可执行脚本问bin/ansible记住基本都是相对路径除了要拷贝的地方也就是/usr/share 进行打包命令如下 [rootFTP ansible-1.0]# python setup.py sdist
running sdist
running check
warning: check: missing required meta-data: urlwarning: check: missing meta-data: either (author and author_email) or (maintainer and maintainer_email) must be suppliedwarning: sdist: manifest template MANIFEST.in does not exist (using default file list)writing manifest file MANIFEST
creating ansible-1.0
creating ansible-1.0/bin
creating ansible-1.0/lib
creating ansible-1.0/lib/ansible
creating ansible-1.0/library
making hard links in ansible-1.0...
hard linking README - ansible-1.0
hard linking setup.py - ansible-1.0
hard linking bin/ansible - ansible-1.0/bin
hard linking lib/ansible/__init__.py - ansible-1.0/lib/ansible
hard linking library/kel - ansible-1.0/library
creating dist
Creating tar archive
removing ansible-1.0 (and everything under it
进行打包之后会在当前目录下新建一个文件夹名称为dist在其中会有一个压缩包名称为ansible-1.0.tar.gz表示的意思为name加上版本号进行解压缩然后安装如下 [rootFTP dist]# ls -l
total 4
-rw-r--r-- 1 root root 694 May 10 09:05 ansible-1.0.tar.gz
[rootFTP dist]# tar -zxf ansible-1.0.tar.gz
[rootFTP dist]# cd ansible-1.0
[rootFTP ansible-1.0]# ls
PKG-INFO README bin lib library setup.py
[rootFTP ansible-1.0]# python setup.py install
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/ansible
copying lib/ansible/__init__.py - build/lib/ansible
running build_scripts
creating build/scripts-2.7
copying and adjusting bin/ansible - build/scripts-2.7
changing mode of build/scripts-2.7/ansible from 644 to 755
running install_lib
running install_scripts
copying build/scripts-2.7/ansible - /usr/local/python/bin
changing mode of /usr/local/python/bin/ansible to 755
running install_data
running install_egg_info
Removing /usr/local/python/lib/python2.7/site-packages/ansible-1.0-py2.7.egg-info
Writing /usr/local/python/lib/python2.7/site-packages/ansible-1.0-py2.7.egg-info 在上面的信息可以看到脚本文件ansible已经拷贝到了/usr/local/python的bin/ansible中这个目录主要是看python的安装位置我的python是安装在/usr/local/python中从而默认拷贝到python的安装路径中。 可以看到拷贝配置文件的时候是没有看到具体的拷贝信息的但是在实际上已经插入了相关的类库配置文件如下所示 [rootFTP other-2.0]# ls -l /usr/share/kel
-rw-r--r-- 1 root root 86 May 9 09:23 /usr/share/kel 从而类库文件也会进行插入。 总结
在python中使用模块distutils,core中的setup方法来进行打包打包的时候也可以打包成rpm的格式也可以打包成exe的windows格式具体的查看官方文档即可网址为 https://docs.python.org/2/distutils/index.html#distutils-index 在进行打包的时候选择使用包的方式还是模块的方式如果使用包的方式那么表示有好几个模块分布在不同的包中如果使用模块的方式那么表示模块都在一个包中的情况下。 在打包的时候执行的指令为python setup.py sdist在安装包的时候解压然后执行python setup.py install
在进行打包的时候主要就是setup.py文件的写法注意其中的包的路径均为相对路径参数的类型具体可以参看官方文档
https://docs.python.org/2/distutils/apiref.html#module-distutils.core
https://www.mihaoyun.com
https://www.cnblogs.com/traditional/p/13213173.html《Cython系列》2. 编译并运行 Cython 代码的几种方式