Python 패키지는 개발에서 매우 일반적입니다. 일반적인 사용 루틴은 모든 기능을 갖춘 Python 모듈 패키지를 만들고, 모듈을 패키징한 다음, 게시하고, 설치하고 사용하는 것입니다. 이 글에서는 Python 패키징 도구 distutils 및 setuptools에 대한 관련 지식을 소개합니다. 관심 있는 친구들은 함께 살펴보시기 바랍니다. Python에서 패키지를 설치하는 방법은 다양합니다:
distutilsdistutils는 Python 표준 라이브러리의 일부입니다. 이 라이브러리의 목적은 개발자에게 편리한 패키징 방법과 사용자에게 편리한 설치 방법을 제공하는 것입니다. 자체 모듈을 개발한 후 distutils의 setup.py 패키지를 사용하세요.
hello.py
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.php.cn png alt=""></img.php.cn>
현재 디렉터리에 dist 폴더가 자동으로 생성되는지 다시 확인하세요. 대상 파일인 폴더에 압축된 패키지가 있습니다. 레코드 파일 MANIFEST도 있습니다.
<img src="https://img.php.cn/upload/article/000/153/291/c9ec895b33001f9a73ccf3328f67de41-1.png" alt="">
再次查看当前目录下自动生成了一个文件夹dist,文件夹中有一个压缩包即为我们的目标文件。另外有一个记录文件MANIFEST。
hello_module-1.0.tar.gz 是生成的python模块。切换到的我的python虚拟环境中,安装该模块。
使用python setup.py install
모듈을 설치하려면 python setup.py install
을 사용하세요. 경로를 보면 알 수 있듯이 표준 라이브러리의 지정된 경로에 모듈이 설치되어 있다.
5. 모듈 사용하기
모듈을 설치한 후 Python 대화형 환경에서 모듈을 가져옵니다. 모듈은 hello.py 파일의 hello_fun() 함수를 참조하는 hello.py 파일입니다.
setuptoolssetuptools는 distutils의 향상된 버전입니다. setuptools에는 Linux에서 서비스를 시작하는 것과 유사한 매우 편리한 Entry_points 기능이 있습니다. 예를 들어, Firefox는 Linux 명령줄에서 Firefox 브라우저를 시작할 수 있습니다.
먼저 설치하기 전에 명령 경로가 적용되지 않는지 확인하세요.
1. 함수 패키지를 생성합니다
dem 폴더를 생성하고 폴더에 get_path.py 및 __init__.py라는 두 개의 파일을 생성합니다. get_path.py는 함수 함수이고 __init__.py는 패키지 식별 파일입니다.
get_path.py
import os def fun(): print "i am in the path:" print os.getcwd()
2. setup.py 파일을 구성합니다
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">
구성에서 이 모듈에 필요한 모든 종속성을 작성하고 설치 중에 다운로드할 주소를 지정합니다. 이 방법을 사용하면 설치 과정이 단순해지지만 충분하지 않습니다. 가장 좋은 방법은 pip의 자동 다운로드를 사용하는 것입니다.
🎜3. 패키징 🎜🎜🎜🎜🎜🎜🎜 🎜🎜패키징 후에는 두 개의 폴더가 더 생성됩니다. 즉, deco.egg-info 및 dist입니다. 데모.egg-info는 필수 설치 정보이고, dist에 압축된 패키지가 설치 패키지입니다. 🎜查看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
위 내용은 Python 패키징 도구 distutils 및 setuptools에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!