Python 패키징 도구 distutils 및 setuptools에 대한 간략한 분석

不言
풀어 주다: 2018-04-20 14:16:02
원래의
2557명이 탐색했습니다.

Python 패키지는 개발에서 매우 일반적입니다. 일반적인 사용 루틴은 모든 기능을 갖춘 Python 모듈 패키지를 만들고, 모듈을 패키징한 다음, 게시하고, 설치하고 사용하는 것입니다. 이 글에서는 Python 패키징 도구 distutils 및 setuptools에 대한 관련 지식을 소개합니다. 관심 있는 친구들은 함께 살펴보시기 바랍니다. Python에서 패키지를 설치하는 방법은 다양합니다:

    소스 패키지: python setup.py install
  1. 온라인 설치: pip install 패키지 이름(linux) / easy_install 패키지 이름(window)
  2. Python 패키지는 개발에서 매우 일반적입니다. 일반적인 사용 루틴은 모든 기능을 갖춘 Python 모듈 패키지를 만들고, 모듈을 패키지하는 것입니다. 을 클릭한 다음 게시, 설치 및 사용합니다. 패키지를 패키징하고 설치하는 것이 가장 일반적인 작업입니다. 공부하는 동안 distutils와 setuptool이라는 두 가지 패키지 도구를 접했습니다. 공부한 후에 메모를 했습니다.

distutilsdistutils는 Python 표준 라이브러리의 일부입니다. 이 라이브러리의 목적은 개발자에게 편리한 패키징 방법과 사용자에게 편리한 설치 방법을 제공하는 것입니다. 자체 모듈을 개발한 후 distutils의 setup.py 패키지를 사용하세요.

1. python

hello.py

def hello_fun():
 print "i say hello to you"
로그인 후 복사


2.setup.py 파일을 생성합니다. setup.py
from distutils.core import setup
setup(
 name="hello_module",
 version="1.0",
 author="ljk",
 author_email="wilber@sh.com",
 py_modules=['hello'],
)
로그인 후 복사


3. 패키징 명령 실행


<img.php.cn/upload/article/000/153/291/c9ec895b33001f9a73ccf3328f67de41 -1. png" alt= ""/>현재 디렉터리에 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

4. 모듈 설치

hello_module-1.0.tar.gz는 생성된 Python 모듈입니다. Python 가상 환경으로 전환하고 모듈을 설치합니다.

모듈을 설치하려면 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 파일을 생성하고 필요한 패키징 정보를 입력합니다.

setup.py

#-*- encoding: UTF-8 -*-
from setuptools import setup
setup(
 name = "demo",    # 包名
 version = "0.1",    # 版本信息
 packages = [&#39;demo&#39;],   # 要打包的项目文件夹
 include_package_data=True, # 自动打包文件夹内所有数据
 zip_safe=True,    # 设定项目包为安全,不用每次都检测其安全性
 install_requires = [   # 安装依赖的其他包(测试数据)
 &#39;docutils>=0.3&#39;,
 &#39;requests&#39;,
 ],
 # 设置程序的入口为path
 # 安装后,命令行执行path相当于调用get_path.py中的fun方法
 entry_points={
  &#39;console_scripts&#39;:[
   &#39;path = demo.get_path:fun&#39;
          ]
 },
)
<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=[&#39;pbr&#39;],
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿