Heim > Backend-Entwicklung > Python-Tutorial > Entdecken Sie die Verwendung von Python-Paketen

Entdecken Sie die Verwendung von Python-Paketen

WBOY
Freigeben: 2023-09-02 12:25:07
Original
1286 Leute haben es durchsucht

探索 Python 包的使用

Mit Python-Paketen können Sie große Systeme aufteilen und ihre Module auf konsistente Weise organisieren, sodass Sie und andere sie effizient nutzen und wiederverwenden können. Pythons Motto „Batterie eingebaut“ bedeutet, dass viele nützliche Pakete in der Standardbibliothek vorinstalliert sind.

Aber Sie können auch viele tolle Softwarepakete von Drittanbietern nutzen. In diesem Tutorial erfahren Sie alles, was Sie wissen müssen, was genau ein Paket ist, wie Sie Module aus einem Paket importieren, die integrierten Pakete in der Python-Standardbibliothek erkunden und Pakete von Drittanbietern installieren.

Was ist eine Tasche?

Bevor wir über Pakete sprechen, besprechen wir zunächst die Module. Module sind Quelldateien mit der Erweiterung *.py , in denen Sie (und andere) die Funktionen und Klassen platzieren, aus denen Ihr Programm besteht.

Ein Paket in Python ist nur ein Ordner, der mehrere Python-Dateien enthält, und es sollte eine __init__.py 文件。 __init__.py 文件表明该目录是一个包。 __init__.py Datei geben, die leer sein oder ausführbaren Code enthalten kann.

Pakete sind die Verkörperung des hierarchischen Namespace-Konzepts von Python. Zitat aus dem Zen von Python:

„Namespaces sind eine tolle Idee – machen wir mehr davon!“

Um das gesamte Python Zen anzuzeigen, geben Sie import this in einer interaktiven Python-Sitzung ein:

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
>>> 
Nach dem Login kopieren

Namespaces helfen dabei, Code zu organisieren und Namenskonflikte zu vermeiden. Dies ist von entscheidender Bedeutung, wenn mehrere Personen zusammenarbeiten oder von anderen entwickelte Pakete verwenden.

Während ein Paket eine Hierarchie von Unterpaketen und Modulen (die Dateien sind) darstellt, muss die Hierarchie nicht unbedingt auf einem Dateisystem basieren, in dem Pakete und Unterpakete Verzeichnisse und Unterverzeichnisse sind. Es ist viel flexibler.

Python-Paket erstellen

Beginnen wir mit einem einfachen Beispiel. Unten haben wir ein Paket namens simple_package, das zwei Python-Module enthält.

simple_package
.
├── __init__.py
├── tasks.py
└── views.py

0 directories, 3 files
Nach dem Login kopieren
  • __init__.py: Zeigt an, dass es sich um ein Paket handelt
  • tasks.py und views.py sind Module

Softwarepakete von Drittanbietern

Werfen wir einen Blick auf das Paket namens ansible. Es ist kein Paket in der Standardbibliothek. Später erfahren Sie, wie Sie Pakete von Drittanbietern finden und installieren. Werfen wir nun einen Blick auf die Verzeichnisdateistruktur.

Diese Pakete werden normalerweise im Site-Packages-Verzeichnis des Python-Interpreters irgendwo unter lib installiert (abhängig von Version, Betriebssystem und Distribution).

Auf einem Mac befindet sich Python 3.10 beispielsweise unter /lib/python3.10/site-packages. So ist das ansible-Paket organisiert:

tree ansible -L 1
ansible
├── cli
├── collections
├── compat
├── config
├── constants.py
├── context.py
├── errors
├── executor
├── galaxy
├── __init__.py
├── inventory
├── keyword_desc.yml
├── __main__.py
├── modules
├── module_utils
├── parsing
├── playbook
├── plugins
├── __pycache__
├── release.py
├── template
├── utils
├── vars
└── _vendor

18 directories, 6 files
Nach dem Login kopieren

Es gibt 6 Module und 18 Verzeichnisse. Jedes Verzeichnis ist ein Unterpaket des Haupt-Ansible-Pakets. Wenn wir uns das Verzeichnis ansible/utils ansehen, können wir sehen, dass es andere Module und sogar ein Unterpaket enthält:

tree ansible/utils -L 1
ansible/utils
├── cmd_functions.py
├── collection_loader
├── color.py
├── context_objects.py
├── display.py
├── encrypt.py
├── fqcn.py
├── galaxy.py
├── hashing.py
├── helpers.py
├── __init__.py
├── jsonrpc.py
├── _junit_xml.py
├── listify.py
├── lock.py
├── multiprocessing.py
├── native_jinja.py
├── path.py
├── plugin_docs.py
├── py3compat.py
├── sentinel.py
├── shlex.py
├── singleton.py
├── ssh_functions.py
├── unicode.py
├── unsafe_proxy.py
├── vars.py
└── version.py

1 directory, 27 files

Nach dem Login kopieren

Suchpfad

Wenn Sie ein Modul importieren, führt Python einen Suchalgorithmus basierend auf dem Suchpfad durch, bei dem es sich um die Liste der Verzeichnisse handelt, in denen mit der Suche begonnen werden soll. Ein Suchpfad ist eine Liste von Verzeichnissen, die über sys.path verfügbar sind, und Sie können ihn dynamisch bearbeiten (Elemente im Suchpfad hinzufügen, löschen oder verschieben). Das Site-Packages-Verzeichnis existiert immer.

Um das Modul path.py aus ansible/utils zu importieren, müssen Sie den folgenden Befehl verwenden:

import ansible.utils.path
Nach dem Login kopieren

Um das pathencrypt-Modul zu importieren, verwenden Sie den folgenden Befehl:

import ansible.utils.path
import ansible.utils.encrypt
Nach dem Login kopieren

Wenn Sie auch das Standardmodul os.path verwenden möchten, verwenden Sie den folgenden Befehl:

import os.path
Nach dem Login kopieren

Jetzt können Sie eines oder beide Pfadmodule verwenden, ohne dass es zu Konflikten aufgrund des Namensraums kommt, zu dem sie gehören.

Erkunden Sie die Standardbibliothek

Die Standardbibliothek enthält viele Pakete. Wenn Sie eine Aufgabe erledigen müssen, sich aber nicht sicher sind, wie, lohnt es sich, sie zu erkunden. Für jede gängige Aufgabe, wie Mathematik, Shell-Integration, Betriebssystem-Integration, String-Manipulation, Vernetzung und gängige Dateiformate, gibt es höchstwahrscheinlich ein gut gestaltetes, leistungsstarkes und gut getestetes Paket in der Standardbibliothek

Sie können den Standardbibliothekspaketen wirklich vertrauen, denn der Zugang zur Standardbibliothek ist eine große Sache. Das Paket wurde entweder von zentralen Python-Entwicklern entworfen oder wurde gründlich geprüft und in der Praxis häufig als Bibliothek eines Drittanbieters verwendet, bevor es in die Standardbibliothek aufgenommen wurde.

Hier sind alle Pakete der Standardbibliothek nach Themen geordnet.

PyPI

Die Standardbibliothek ist großartig, aber oft benötigt man spezielle Funktionen, die nicht zum Standard gehören. Das bedeutet nicht, dass Sie es von Grund auf neu schreiben müssen. Python verfügt über eine lebendige und aktive Community, die viel Code kostenlos entwickelt und teilt. Geben Sie PyPI ein: den Python-Paketindex. PyPI hostet alle öffentlich verfügbaren Softwarepakete und bietet einen One-Stop-Shop zum Durchsuchen dieser.

浏览 PyPI

PyPI 将包组织在可浏览的索引中。您可以按主题、环境、框架、开发、状态、目标受众、许可证、自然语言、编程语言(是的,有支持多种编程语言的 Python 包)和操作系统来浏览和搜索。

截至 2021 年,PyPI 不再显示软件包的下载统计信息,因为维护统计信息所需的资源导致其效率低下。

安装软件包

有两种方法可以从 PyPI 安装软件包。您可以下载该软件包,然后运行 ​​python setup.py install。但现代的方法是使用 pip、setuptools 和wheel。

从 Python 3.4 和 Python 2.79 开始默认包含 Pip 和 setuptools,但您需要升级到最新版本:

  • Linux/macOS:pip install -U pip setuptools
  • Windows:python -m pip install -U pip setuptools
但是,不再支持 Python 2,因此您应该已经使用 Python 3.0 或更高版本来提高性能。

使用pip安装wheel:

pip install wheel.
Nach dem Login kopieren

要使用 pip 安装软件包,请发出此命令。

pip install <package_name>
Nach dem Login kopieren

其中 package_name 是包的名称。例如,要安装 Ansible,命令如下所示:

pip install ansible
Nach dem Login kopieren

如果需要特定版本,也可以指定如下:

pip install ansible==7.0
Nach dem Login kopieren

Python 包始终安装到环境中。我在这里不会介绍的一种常见做法是使用虚拟环境来管理具有不同解释器和/或不同安装包集的多个独立的 Python 安装。您可以在此处阅读有关虚拟环境的更多信息。

最佳实践

Python 打包权威提供了大量有关打包最佳实践的指导。这很重要,因为这是一个正在积极开发的领域,并且建议会快速发展。

此外,如果您想做一些特别的事情,例如从替代存储库而不是 PyPI 安装软件包或以更复杂的方式使用 pip,您会发现精彩的讨论和实用的建议。

结论

当您是 Python 初学者时,您会学习核心语言并享受使用它的乐趣。很快您就会发现标准库,并且随着您获得更多经验,您会从它的丰富性中受益越来越多。

作为 Pythonista,您发展的下一阶段是将 Python 社区在 PyPI 上带来的巨大优势融入到您的系统中。包作为可重用 Python 代码的部署单元使这个生态系统得以实现。

Das obige ist der detaillierte Inhalt vonEntdecken Sie die Verwendung von Python-Paketen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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