python代码如何打包_python代码打包发布

python打包(packaging)常用的两个工具:distutils和setuptools。

distutils是标准打包工具,被包含在标准库中,可以用作简单的python发布。

setuptools并不是python标准库的一部分,它的诞生是为了克服distutils的不足,是distutils的增强版。

这里只介绍distutils的使用

2. distutils基本使用

(1)简介

当使用distutils时,setup脚本是构建、发布、安装模块的核心。setup脚本的目的是向distutils描述你的模块发布,以便于在你的模块上操作的各种命令都能正确进行。setup脚本主要包含一个setup()函数调用,模块开发者提供给distutils的大多数信息都是通过setup()函数的关键字参数传递的。

下面是distuitls模块的setup.py文件示例:

1 from distutils.core importsetup2

3 setup(name=’Distutils’,4 version=’1.0’,5 description=’Python Distribution Utilities’,6 author=’Greg Ward’,7 author_email=’gward@python.net’,8 url=’http://www.python.org/sigs/distutils-sig/’,9 packages=[’distutils’, ’distutils.command’],

(2)一个例子

构建如下目录结构:

test/

├── foobar

│ ├── __init__.py

│ ├── bar.py

│ ├── foo.py

│ └── subfoo

│ ├── __init__.py

│ └── blah.py

└── setup.py

setup.py书写如下:

1 from distutils.core importsetup2 setup(name='foobar',3 version='1.0',4 description='test module',5 author='brown',6 packages=['foobar', 'foobar.subfoo'],7 )

在test目录一级,执行install命令

python setup.py install

使用pip show查看刚刚安装的包

pip show foobar

3. 安装package data

有时,我们需要将一些数据文件(数据、配置、日志等)打包进去,这时需要使用package_data关键字

(1)例子

在上面例子test/foobar添加data目录,并在里面创建1.dat、2.dat文件,新的目录结构如下:

test/

├── foobar

│ ├── __init__.py

│ ├── bar.py

│ ├── data

│ │ ├── 1.dat

│ │ └── 2.dat

│ ├── foo.py

│ └── subfoo

│ ├── __init__.py

│ └── blah.py

└── setup.py

更改setup.py为:

1 from distutils.core importsetup2

3 setup(name='foobar',4 version='1.0',5 description='test module',6 author='brown',7 packages=['foobar', 'foobar.subfoo'],8 package_data={'foobar': ['data/*']},9 )

然后执行python setup.py install安装。

4. 扩展模块

如果你的代码里包含一些C、C++代码,就需要做些额外操作,包括:声明扩展名字、源文件位置、include目录或lib目录。

使用ext_modules关键字参数,ext_modules是Extension实例的集合。

Extension参数如下:

Extension(’pkg.foo’, [’src/foo.c’], include_dirs=[’include’], libraries=['lib'])

pkg.foo是扩展包名,它决定了你在python代码中如何引用foo.c;

src/foo.c是C代码相对位置;

include是C代码依赖的include目录;

lib是C代码依赖的库目录;

(1)例子

建立如下目录的文件:

test/

├── cpp

│ ├── bar.c

│ └── foo.c

├── foobar

│ ├── __init__.py

│ └── test.py

└── setup.py

setup.py文件如下:

1 from distutils.core importsetup, Extension2

3 setup(name='foobar',4 version='1.0',5 description='test module',6 author='brown',7 packages=['foobar'],8 ext_modules=[9 Extension('foobar.foo', ['cpp/foo.c']),10 Extension('foobar.bar', ['cpp/bar.c'])11 ],12 )

然后install

Ref

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值