python打包文件

来源:互联网 发布:淘宝账户怎么注册不了 编辑:程序博客网 时间:2024/05/15 00:29
本文主要介绍如何制作一个自己的python模块。

一、单个模块的导入
python中,当需要用到其他模块中,可以使用import导入需要的模块明,如:
import subprocess
subprocess.Popen('cd /home/sqxu')
该例中,我们需要使用subprocess模块下的Popen类,可以直接通过import subprocess导入该模块,其他如os,sys等都是python自带的模块,可以直接导入。
导入单个模块还有一种情况,假设有模块helloworld.py,如果希望像上面的subprocess一样直接导入,最简单的方式是将模块helloworld.py手动添加至$python/Lib中,即“c:\\Python27\\Lib”,然后即可直接导入,一般不推荐这种方法,

二、多个模块的简单导入
我们在实际编写代码时会有多个包文件和多个py文件,例如在包package中有子包package1、package2以及module.py,并且在子包package1中有module1.py,在子包package2中有module2.py,假设在module.py中要用到module1.py和module2.py中的类,此时可以在module.py中直接通过如下代码实现:
import package1.module1
import package2.module2
这种方法可以简单的实现自定义模块的导入,但前提是在同一个包文件中,如果module.py不在包package中,上述导入失败。

三、自定义模块的制作-distutils
distutils为python标准库的一部分,可以很方便的让用户创建新的模块、包和工具,并且安装也很容易,下面将详细介绍使用setup()新建模块。
在文件夹MyDemo新建一个mydemo.py文件,如下:
#!/usr/bin/env python
# -*- coding:utf8 -*-
 
'''
Created on 2015年2月4日
Func: setup()使用
@author: sqxu
'''
 
def print_hello():
print 'hello'
 
def print_world():
print 'world'
接下来就可以利用该py新建一个模块了,在MyDemo文件夹下新建一个setup.py,如下:
#!/usr/bin/env python
# -*- coding:utf8 -*-
 
'''
Created on 2015年2月4日
Func: setup内容
@author: sqxu
'''
 
from distutils.core import setup
 
setup(
name = 'mydemo',
version = '1.0',
author = 'sqxu',
py_modules = ['mydemo'],
description = 'my demo with distutils'
)
在setup()中会说明模块的名字,版本等信息,python提供多个属性模块进行说明,如下所示:
# Legal keyword arguments for the setup() function
setup_keywords = ('distclass', 'script_name', 'script_args', 'options',
'name', 'version', 'author', 'author_email',
'maintainer', 'maintainer_email', 'url', 'license',
'description', 'long_description', 'keywords',
'platforms', 'classifiers', 'download_url',
'requires', 'provides', 'obsoletes',
)
完成setup.py后,输入命令python setup.py sdist,在当前目录下会生成文件夹dist,进入dist后有压缩包mydemo-1.0.zip,解压该文件后利用python setup.py install完成该模块的安装,然后即可使用该模块了。linux下会生成一个tar.gz文件,安装方法一样,解压会利用install安装,不详细说明。
具体操作如下图所示:

图1 python sdist

图2 python install
上面介绍的是新一个模块,工作中往往需要自定义一个库,里面包含多个py文件,假设包mydemo中包含多个py文件时,只需要在setup.py中的添加属性packages即可,如:
#!/usr/bin/env python
# -*- coding:utf8 -*-
 
'''
Created on 2015年2月4日
@author: sqxu
'''
 
from distutils.core import setup
 
setup(
name='mydemo',
version='1.0',
author='sqxu',
author_email='sqxu@***.com',
packages = ['mydemo']
)

上面介绍了利用python setup.py sdist进行打包,使用该命令会生成一个源码安装包,初次之外还有其他常见的打包方式,如:
python setup.py sdist #源码安装包
python setup.py bdist_wininst #win下使用,生成一个exe文件,可直接利用该exe安装模块
python setup.py bdist_rpm #linux下使用,生成rpm文件
其他打包方式可以通过命令python setup.py bdist --help-formats查看。
C:\Users\sqxu\Desktop\MyDemo>python setup.py bdist --help-formats
List of available distribution formats:
--formats=rpm RPM distribution
--formats=gztar gzip ed tar file
--formats=bztar bzip2 ed tar file
--formats=ztar compressed tar file
--formats=tar tar file
--formats=wininst Windows executable installer
--formats=zip ZIP file
--formats=msi Microsoft Installer

四、自定义模块的制作-setuptools
(未完待续)

0 0
原创粉丝点击