python使用distutils打包和安装:
1. 命令说明
python setup.py --help-commands 输出命令说明
python setup.py sdist 创建一个源码包发布 source distribution
python setup.py bdist 创建一个二进制包发布 binary distribution
python setup.py sdist
可以为sdist指定格式:--formats=
zip: zip file
gztar: tar.gz file
bztar: tar.bz2 file
ztar: tar.Z file
tar: tar file
如:python setup.py sdist --formats=zip将打包为zip格式,此为win7下的默认格式
python setup.py bdist
可以为bdist指定的格式:--formats=
gztar: tar.gz file
ztar: tar.Z file
tar: tar file
zip: zip file
rpm: RPM Package
pkgtool: Solaris pkgtool
winist: windows上子解压的zip格式包
msi:microsoft installer
如可以使用:python setup.py bdist --formats=msi
获取帮助的方式:
python setup.py --help
python setup.py --help-commands: 所有可以使用的命令,如build,install
python setup.py COMMAND --help-formats: 获取特定命令支持使用的格式
如:python setup.py sdist --help-formats输出支持的格式,windows输出如下:
List of available source distribution for
--formats=bztar bzip2'ed tar-file
--formats=gztar gzip'ed tar-file
--formats=tar uncompressed tar file
--formats=zip ZIP file
--formats=ztar compressed tar file
然后python setup.py sdist --formats=bztar,以bztar格式打包
2. 使用例子:
pkg文件夹下有一下文件:
mymodule.py:
def func():
print('this is my module')
README.txt:里面内容可以自己定义
setup.py:
from distutils.core import setup
setup(name='pkg', # 包名(必需)
version='1.0', #版本号
author='author1',
author_email = '[email protected]',
py_modules=['mymodule'], #各模块名称组成的列表,此模块可能位于包的根目录下,也可能位于某子包目录中
url = 'http://www.baidu.com',
description = 'A simple module'
)
打包:cmd命令cd到pkg文件夹下
源代码包打包:
执行:python setup.py sdist进行打包,打包后pkg文件夹下会有一个dist文件夹,
里面有pkg-1.0.zip(win7默认格式)
指定格式打包:python setup.py sdist --formats=bztar,输出pkg-1.0.tar.bz2
当然以其他格式打包也行,源代码打包后,进行解压后,会有四个文件:
mymodule.py,README.txt,setup.py,PKG_INFO
二进制包打包:
执行:python setup.py bdist
python setup.py bdist --formats=msi
python setup.py bdist_wininst //Windows 下使用,此种方法打包后,会在dist文件夹生成
pkg-1.0.win32.exe,执行安装时,若你已经安装了python,会默认安装到F:\Python\Lib\site-packages\目录下
,该目录被包含在sys.path中,导入模块时,可以直接导入,会默认到该目录下搜索。
当然也可打包linux格式:python setup.py bdist_rpm //Linux 下使用
安装:
源码包的安装是将源码包解压后,运行python setup.py install;而Windows和Linux安装包则直接运行安装文件;
上面例子执行源码安装:python setup.py install,输出:
running install
running build
running build_py
creating build
creating build\lib
copying mymodule.py -> build\lib
running install_lib
byte-compiling F:\Python\Lib\site-packages\mymodule.py to mymodule.cpython-34.pyc
running install_egg_info
Removing F:\Python\Lib\site-packages\pkg-1.0-py3.4.egg-info
Writing F:\Python\Lib\site-packages\pkg-1.0-py3.4.egg-info
执行后F:\Python\Lib\site-packages\目录下会有mymodule.py,pkg-1.0-py3.4.egg-info文件,以及在F:
\Python\Lib\site-packages\__pycache__目录下会有mymodule.cpython-34.pyc字节码文件
安装后,就可以直接导入模块了,如import mymodule
>>> import mymodule
>>> mymodule.func()
this is my module
注:site-packages目录为默认安装目录
自定义安装路径:
--user=
--prefix=
--exec-prefix=
深度定制:
--install-purelib=/path/to/python_lib
--install_platlib=/path/to/plat_lib
--install-lib=/path/to/lib
--install-scripts=/path/to/bin 可执行文件的安装路径
--install-data=
--install-headers=