Heim > Backend-Entwicklung > Python-Tutorial > Eine kurze Analyse der Python-Paketierungstools Distutils und Setuptools

Eine kurze Analyse der Python-Paketierungstools Distutils und Setuptools

不言
Freigeben: 2018-04-20 14:16:02
Original
2596 Leute haben es durchsucht

Python-Pakete sind in der Entwicklung sehr verbreitet. Die allgemeine Verwendungsroutine besteht darin, ein Python-Modulpaket mit allen Funktionen zu erstellen, das Modul zu packen, es dann zu veröffentlichen, zu installieren und zu verwenden. Dieser Artikel führt Sie in die relevanten Kenntnisse der Python-Paketierungstools Distutils und Setuptools ein. Interessierte Freunde sollten einen Blick darauf werfen

Es gibt viele Möglichkeiten, Pakete in Python zu installieren:

  1. Quellpaket: python setup.py install

  2. Online-Installation: pip install-Paketname (Linux) / easy_install-Paketname (Fenster)

Python-Pakete sind in der Entwicklung sehr verbreitet. Die allgemeine Verwendungsroutine besteht darin, ein Python-Modulpaket mit allen Funktionen zu erstellen, das Modul zu packen, es dann zu veröffentlichen, zu installieren und zu verwenden. Das Verpacken und Installieren von Paketen ist die häufigste Aufgabe. Während meines Studiums bin ich auf zwei verpackte Tools gestoßen, Distutils und Setuptools, die ich mir nach dem Studium notiert habe.

distutils

distutils ist Teil der Python-Standardbibliothek. Der Zweck dieser Bibliothek besteht darin, Entwicklern eine praktische Verpackungsmethode bereitzustellen Benutzer mit bequemen Installationsmethoden. Nachdem wir unser eigenes Modul entwickelt haben, verwenden wir das setup.py-Paket von distutils.

1. Vervollständigen Sie die Funktion Python

hello.py


def hello_fun():
 print "i say hello to you"
Nach dem Login kopieren


2. Erstellen Sie die setup.py-Datei

setup.py


from distutils.core import setup
setup(
 name="hello_module",
 version="1.0",
 author="ljk",
 author_email="wilber@sh.com",
 py_modules=['hello'],
)
Nach dem Login kopieren


3. Führen Sie den Verpackungsbefehl aus

<img src="https://img.php.cn/upload/article/000/153/291/c9ec895b33001f9a73ccf3328f67de41-1.png" alt=""/>

Überprüfen Sie noch einmal, ob im aktuellen Verzeichnis automatisch ein Ordner dist generiert wird. In dem Ordner, der unsere Zieldatei ist, befindet sich ein komprimiertes Paket. Es gibt auch eine Datensatzdatei MANIFEST.

4. Installieren Sie das Modul

hello_module-1.0.tar.gz ist das generierte Python-Modul . Wechseln Sie zu meiner virtuellen Python-Umgebung und installieren Sie das Modul.

Verwenden Sie python setup.py install , um das Modul zu installieren. Wie aus dem Pfad ersichtlich ist, wird das Modul im angegebenen Pfad der Standardbibliothek installiert.

5. Module verwenden

Importieren Sie das Modul nach der Installation in die interaktive Python-Umgebung . Das Modul ist die Datei hello.py, die auf die Funktion hello_fun() in der Datei hello.py verweist.

setuptools

setuptools ist eine erweiterte Version von distutils. setuptools verfügt über eine Funktion „entry_points“, die sehr praktisch ist, ähnlich wie das Starten eines Dienstes unter Linux. Beispielsweise kann Firefox den Firefox-Browser in der Linux-Befehlszeile starten.

Überprüfen Sie vor der Installation zunächst, ob der Befehlspfad keine Auswirkungen hat.

1. Erstellen Sie ein Funktionspaket

Erstellen Sie einen Ordner demo und erstellen Sie get_path im Ordner. py und __init__.py zwei Dateien. get_path.py ist die Funktionsfunktion und __init__.py ist die Paketidentifikationsdatei.

get_path.py


import os
def fun():
 print "i am in the path:"
 print os.getcwd()
Nach dem Login kopieren


2. Konfigurieren Sie die Datei setup.py

Erstellen Sie die Datei setup.py und geben Sie die erforderlichen Paketinformationen ein.

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">
Nach dem Login kopieren


Schreiben Sie alle vom Modul benötigten Abhängigkeiten in die Konfiguration Adresse zum Herunterladen bei der Installation. Diese Methode vereinfacht den Installationsprozess bei der Verwendung, ist jedoch nicht gut genug. Am besten nutzen Sie den automatischen Download von pip.

3. Verpackung

Nach dem Verpacken gibt es noch zwei weitere Ordner bzw. demo.egg-info und dist. demo.egg-info sind die notwendigen Installationsinformationen, und das komprimierte Paket in dist ist das Installationspaket.

查看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
Nach dem Login kopieren




Das obige ist der detaillierte Inhalt vonEine kurze Analyse der Python-Paketierungstools Distutils und Setuptools. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage