python的setup.py文件

最近工作需要,用Cython写了*.pyx扩展,并将其编译成C文件,最后转换为so扩展,供python引用

使用 distutils 编译,建立一个setup.py
的脚本

from distutils.core import setup

from distutils.extension import Extension

from Cython.Distutils import build_ext

setup(

name = ‘cython_build_test’,

cmdclass = {‘build_ext‘:build_ext},

ext_modules = ext_modules

)

关于setup函数的一些参数:

1、name

site-package安装目录下的egg文件:/usr/lib64/python2.6/site-packages/cython_build_test-0.0.0-py2.6.egg-info,如果不指定,将会与UNKNOW命名:/usr/lib64/python2.6/site-packages/UNKNOWN-0.0.0-py2.6.egg-info

2、packages告诉Distutils需要处理那些包(包含__init__.py的文件夹)

3、package_dirs告诉Distutils哪些目录下的文件被映射到哪个源码包。一个例子:package_dir
= {‘’:lib},表示“root package”中的模块都在lib目录4、
ext_modules是一个包含Extension实例的列表,Extension的定义也有一些参数,定义如下

5、ext_package定义extension的相对路径

6、requires定义依赖哪些模块

7、provides定义可以为哪些模块提供依赖

8、scripts指定python源码文件,可以从命令行执行。在安装时指定—install-script

9、package_data通常包含与包实现相关的一些数据文件或类似于readme的文件。如果没有提供模板,会被添加到MANIFEST文件中。

10、data_files指定其他的一些文件(如配置文件) 

关于ext_modules参数详细说明:

定义Extension实例列表,

1、name

扩展包的名字,供python导入import时使用

2、source

源文件组成的列表,源文件可以是C,C++等特定的资源文件,或任何其他由build_ext命令确认为来源为Python扩展。

3、language

扩展语言名称

4、include_dirs

提供搜索C/C++头文件的目录组成的列表(比如:*.h)

5、library_dirs

提供搜索C/C++库文件的目录组成的列表(比如:*.a)

6、libraries

库名(不是文件名或路径)的组成的列表

简单的setup.py文件:

(1)

运行setup.py,传递参数build_ext,选项—inplace

python setup.py build_ext —inplace

系统报告:

running build_ext

cythoning import_cython_c_math.pyx to import_cython_c_math.c

building ‘import_cython_c_math‘ extension

creating build

creating build/temp.linux-x86_64-2.6

gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.6 -c import_cython_c_math.c -obuild/temp.linux-x86_64-2.6/import_cython_c_math.o

gcc -pthread -shared build/temp.linux-x86_64-2.6/import_cython_c_math.o -L/usr/lib64 -lpython2.6 -o /home/linshaowei/cython_setup_test/import_cython_c_math.so

此时:

当前目录下自动创建了:

build目录

进入到build目录里,有一个目录: temp.linux-x86_64-2.6,该目录里面存放了import_cython_c_math.o文件,该文件是c代码编译之后的包含0,1指令的对象文件(即c语音编译之后的文件)

import_cython_c_math.so,其次是生成供python直接引用的动态链接库,是一个链接文件

此时就可以在python引用该库文件了。

(2)

运行setup.py,传递参数build(编译)

python setup.py build

系统报告:

running build

running build_ext

cythoning import_cython_c_math.pyx to import_cython_c_math.c

building ‘import_cython_c_math‘ extension

creating build

creating build/temp.linux-x86_64-2.6

gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.6 -c import_cython_c_math.c -o build/temp.linux-x86_64-2.6/import_cython_c_math.o

creating build/lib.linux-x86_64-2.6

gcc -pthread -shared build/temp.linux-x86_64-2.6/import_cython_c_math.o -L/usr/lib64 -lpython2.6 -o build/lib.linux-x86_64-2.6/import_cython_c_math.so

此时,

当前目录下自动创建了:

build目录

进入到build目录,有两个目录:

lib.linux-x86_64-2.6该目录里面存放:import_cython_c_math.so文件

temp.linux-x86_64-2.6该目录里面存放:import_cython_c_math.o文件

sudo python setup.py install(安装)

running install

running build

running build_ext

skipping ‘import_cython_c_math.c‘ Cython extension (up-to-date)

running install_lib

copying build/lib.linux-x86_64-2.6/import_cython_c_math.so -> /usr/lib64/python2.6/site-packages

running install_egg_info

Writing /usr/lib64/python2.6/site-packages/cython_build_test-0.0.0-py2.6.egg-info

install参数,将动态链接文件 build/lib.linux-x86_64-2.6/import_cython_c_math.so创建了软链接/usr/lib64/python2.6/site-packages

再写入Writing /usr/lib64/python2.6/site-packages/cython_build_test-0.0.0-py2.6.egg-info python安装目录,生成了egg文件并存放到安装目录,就意味着python可以随处引用它

python的setup.py文件

时间: 2024-08-08 13:42:41

python的setup.py文件的相关文章

python的构建工具——setup.py文件

一.构建工具setup.py的应用场景 在安装python的相关模块和库时,我们一般使用"pip install  模块名"或者"python setup.py install",前者是在线安装,会安装该包的相关依赖包:后者是下载源码包然后在本地安装,不会安装该包的相关依赖包.所以在安装普通的python包时,利用pip工具相当简单.但是在如下场景下,使用python setup.py install会更适合需求: 在编写相关系统时,python 如何实现连同依赖包

python 利用 setup.py 手动安装django_chartit

手动安装django_chartit库 1 下载压缩包 2 解压到python安装目录下,文件夹名为django_chartit,并检查文件夹下是否有setup.py文件 3 在cmd中进入django_chartit文件夹下,cmd命令为 cd C:\Python27\django_chartit 4 输入python setup.py build并执行 5 输入python setup.py install执行,不出意外安装成功 6 import chartit不报错即安装成功 下章将如何运

如何使用setup.py文件

setup.py文件的使用:% python setup.py build #编译% python setup.py install    #安装% python setup.py sdist     #制作分发包% python setup.py bdist_wininst #制作windows下的分发包% python setup.py bdist_rpm 转自: http://blog.csdn.net/ponder008/article/details/6592719/

Python中__init__.py文件作用之我见

在Python中每次创建一个package后都会自动生成一个 __init__.py'空文件;该问价的作用是:声明我们当前创建的文件夹(包)是一个**Python模块**,在Python中每一个包中必须有一个__init__ .py文件. 一般这个文件都为空,只有我们在这个包下面创建多个.py文件后,当我们想使用该包下的某一模块,我们则需要在__init__.py文件中通过 __ all__ = [ '模块名'] 指定我们需要导入的模块, Python中导包其实就是导入指定包文件中的__init

Python如何将py文件打包成exe

安装pyinstaller 打开cmd窗口,输入pip install pyinstaller,命令行输出successfully表示成功. 生成exe文件 一.单个py文件 在py文件目录下,打开cmd窗口,输入pyinstall -F XXX.py,执行成功的话,会在当前目录生成一个dist文件夹,XXX.exe文件在此文件夹下. 添加版本信息: 安装好pyinstaller后,我们会得到两个辅助工具,pyi-grab_version和pyi-set_version. 1. 使用pyi-gr

Python脚本随笔-py文件间的调用

脚本运行过程中可能由某个py文件调用另一个py文件,不同于import,调用py文件相当于直接去执行另一个py文件 py文件的调用需要使用sys库和os库 调用并传参数:调用py文件可以使用os.system(file)语句,file为被调用py文件的绝对路径,os.system语句规则如下: os.system格式为os.system(command % (%s,%i ...))command 为字符串格式的命令语句,如果需要传递参数,以%s或%i等取代具体参数如下:%s    字符串 (采用

如何将jupyter中的.ipynb文件转换成python中的.py文件

引自:https://blog.csdn.net/weixin_43453851/article/details/89192635 1,在当前文件夹的目录中输入cmd并回车(打开的cmd中会显示出你当前的目录)2,输入命令: jupyter nbconvert --to script *.ipynb3,运行完后,当前文件夹目录中的所有.ipynb文件都会转成.py文件. 原文地址:https://www.cnblogs.com/lyp1010/p/12240119.html

Python中__init__.py文件的作用详解

转自http://www.jb51.net/article/92863.htm http://www.jb51.net/article/86580.htm 网址包含更多关于Python相关内容感兴趣的读者可查看本站专题:<Python图片操作技巧总结>.<Python数据结构与算法教程>.<Python Socket编程技巧总结>.<Python函数使用技巧总结>.<Python字符串操作技巧汇总>.<Python入门与进阶经典教程>

Python 3.4 .py文件打包成exe可执行文件方法

系统以及环境:Windows 7 64 bit Python 3.4.3 64位 1. 首先在网站 https://pypi.python.org/pypi/cx_Freeze上下载cx_Freeze 4.3.4.需要下载64位的,与电脑中所装Python 64位对应,不然会提示安装错误. 2. 根据 http://blog.csdn.net/wangdamozhizhou/article/details/18135889所述方法安装,并检查是否安装成功. 3. 成功安装后即可按照 http:/