首页 > 编程语言 > 详细

python代码打包发布

时间:2020-09-17 13:41:57      阅读:51      评论:0      收藏:0      [点我收藏+]

引自:https://blog.csdn.net/qq_16912257/article/details/80160639

python代码打包发布

python打包(packaging)常用的两个工具:distutilssetuptools

  • 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 import setup
2 
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 import setup
2 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.dat2.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 import setup
2 
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_modulesExtension实例的集合。

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 import setup, Extension
 2 
 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

Distributing Python Modules

python代码打包发布

原文:https://www.cnblogs.com/ylzchs/p/13683690.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!