Maison > Article > développement back-end > Une brève analyse des outils d'empaquetage Python distutils et setuptools
Les packages Python sont très courants dans le développement. La routine d'utilisation générale consiste à créer un package de module Python avec toutes les fonctions, à empaqueter le module, puis à le publier, à l'installer et à l'utiliser. Cet article vous présente les connaissances pertinentes sur les outils d'empaquetage python distutils et setuptools. Les amis intéressés devraient y jeter un œil
Il existe de nombreuses façons d'installer des packages en python :
distutils
distutils fait partie de la bibliothèque standard python Le but de cette bibliothèque est de fournir aux développeurs une méthode d'empaquetage pratique Provide. utilisateurs avec des méthodes d'installation pratiques. Après avoir développé notre propre module, utilisez le package setup.py de distutils.
def hello_fun(): print "i say hello to you"
from distutils.core import setup setup( name="hello_module", version="1.0", author="ljk", author_email="wilber@sh.com", py_modules=['hello'], )
<img src="https://img.php.cn/upload/article/000/153/291/c9ec895b33001f9a73ccf3328f67de41-1.png" alt="">
pour installer le module. Comme le montre le chemin, le module est installé sur le chemin spécifié de la bibliothèque standard. python setup.py install
setuptools
setuptools est une version améliorée de distutils. setuptools a une fonction Entry_points qui est très pratique, similaire au démarrage d'un service sous Linux. Par exemple, Firefox peut démarrer le navigateur Firefox dans la ligne de commande Linux. Vérifiez d'abord que le chemin de la commande n'a aucun effet avant l'installation.1. Créez un package de fonctions
Créez un dossier demo et créez get_path dans le dossier . py et __init__.py deux fichiers. get_path.py est la fonction fonction et __init__.py est le fichier d'identification du package. get_path.pyimport os def fun(): print "i am in the path:" print os.getcwd()
2. Configurez le fichier setup.py
Créez le fichier setup.py et remplissez les informations d'emballage nécessaires. setup.py#-*- encoding: UTF-8 -*- from setuptools import setup setup( name = "demo", # 包名 version = "0.1", # 版本信息 packages = ['demo'], # 要打包的项目文件夹 include_package_data=True, # 自动打包文件夹内所有数据 zip_safe=True, # 设定项目包为安全,不用每次都检测其安全性 install_requires = [ # 安装依赖的其他包(测试数据) 'docutils>=0.3', 'requests', ], # 设置程序的入口为path # 安装后,命令行执行path相当于调用get_path.py中的fun方法 entry_points={ 'console_scripts':[ 'path = demo.get_path:fun' ] }, ) <br data-filtered="filtered"><br data-filtered="filtered">
3. Emballage
Après l'emballage, il y en aura deux autres. dossiers , respectivement demo.egg-info et dist. demo.egg-info est les informations d'installation nécessaires et le package compressé dans dist est le package d'installation.
查看dist/demo-0.1.tar.gz解压之后的文件。
四、安装包
五、使用包
安装之后在命令行中直接输入path,回车能够看到调用了get_path.py中的函数fun(),输出字符串。
同时也可以导入使用。
setuptools的进阶使用
上面使用setuptools时只是简单的用一个配置文件setup.py就完成了打包信息填写。在真实的开发环境中,往往是多个文件配合。以openstack的打包为例。openstack中引入了Pbr的管理工具。
pbr是setuptools的辅助工具,最初为openstack开发,基于d2to1。Pbr会读取和过滤setup.cfg中的内容,然后将解析后的数据提供给setup.py作为参数。
setup.cfg提供setup.py的默认参数,同时易于修改。Setup.py先解析setup.cfg文件,然后执行相关命令。包括以下功能:
1、从git中获取Version,AUTHORS和ChangeLog信息
2、SphinxAutodoc。pbr会扫描project,找到所有模块,生成stubfiles
3、Requirements。读取requirements.txt文件,生成setup函数需要依赖包
4、long_description。从README.rst、README.txt或者READMEfile中生成long_description参数
Pbr的文件很简单,如下。配置之后会自动寻找目录下的setup.cfg文件,解析文件参数给setup.py使用。
setup.py
from setuptools import setup setuptools.setup( setup_requires=['pbr'], pbr=True) setup.cfg [metadata] name= keystone version= 2015.2 summary= OpenStack Identity description-file= README.rst author= OpenStack author-email= openstack-dev@lists.openstack.org home-page= http://www.openstack.org/ classifier= Environment:: OpenStack IntendedAudience :: Information Technology IntendedAudience :: System Administrators License:: OSI Approved :: Apache Software License OperatingSystem :: POSIX :: Linux ProgrammingLanguage :: Python ProgrammingLanguage :: Python :: 2 ProgrammingLanguage :: Python :: 2.7 [files] packages= keystone [global] setup-hooks= pbr.hooks.setup_hook [egg_info] tag_build= tag_date= 0 tag_svn_revision= 0 [build_sphinx] all_files= 1 build-dir= doc/build source-dir= doc/source [compile_catalog] directory= keystone/locale domain= keystone
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!