Cara menggunakan struktur package dalam python

Indonesian [Bahasa Indonesia] translation by ⚡ Rova Rindrata [you can also view the original English article]

Paket Python memungkinkan Anda memecah sistem besar dan mengatur modul mereka dengan cara yang konsisten yang dapat digunakan dan digunakan kembali oleh Anda dan orang lain secara efisien. Moto Python tentang "Batteries Included" berarti bahwa ia dilengkapi dengan banyak paket yang berguna di perpustakaan standarnya.

Tetapi ada juga banyak paket pihak ketiga yang luar biasa yang dapat Anda manfaatkan. Dalam tutorial ini Anda akan mempelajari semua yang perlu Anda ketahui tentang paket apa saja yang tepat, cara mengimpor modul dari paket, menjelajahi paket bawaan di perpustakaan standar Python, dan memasang paket pihak ketiga.

Apakah Itu Paket?

Sebelum kita dapat berbicara tentang paket, mari kita bicara tentang modul. Modul adalah file sumber dengan ekstensi *.py di mana Anda [dan orang lain] meletakkan fungsi dan kelas yang membentuk program Anda. Paket adalah manifestasi dari konsep namespace hierarkis Python. Untuk mengutip dari Zen of Python:

"Namespace adalah satu ide bagus yang mengagumkan -- mari lakukan lebih banyak dari itu!"

Untuk melihat seluruh Zen Python, ketik import this dalam sesi interaktif Python:

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!

Namespace membantu mengatur kode dan mencegah konflik penamaan. Ini sangat penting ketika banyak orang bekerja sama atau ketika menggunakan paket yang dikembangkan oleh orang lain.

Sementara paket mewakili hirarki sub-paket dan modul, yang merupakan file hirarki tidak harus berbasis sistem file di mana paket dan sub-paket adalah direktori dan sub-direktori. Jauh lebih fleksibel dari itu.

Paket Contoh

Mari kita lihat paket yang disebut "ansible". Ini bukan paket dari perpustakaan standar. Anda akan melihat nanti bagaimana menemukan dan memasang paket pihak ketiga. Sekarang, mari kita periksa struktur file direktori.

Paket-paket ini akan diinstal secara khusus ke direktori site-packages penterjemah Python, yang akan ditempatkan di suatu tempat [tergantung pada versi, OS, dan distribusi] di bawah "lib". Di Mac, untuk Python 2.7 itu akan ditempatkan di "/lib/python2.7/site-packages". Di sini adalah bagaimana paket "ansible" diatur:

tree ansible -L 1

ansible

├── __init__.py

├── cli

├── compat

├── config

├── constants.py

├── errors

├── executor

├── galaxy

├── inventory

├── module_utils

├── modules

├── parsing

├── playbook

├── plugins

├── template

├── utils

└── vars



15 directories, 2 files

Ada dua modul dan 15 direktori. Setiap direktori adalah sub-paket dari paket ansible utama. Melihat ke dalam direktori ansible/utils, kita dapat melihat ini berisi modul tambahan dan bahkan satu lagi sub-paket:

tree ansible/utils -L 1

ansible/utils

├── __init__.py

├── boolean.py

├── cmd_functions.py

├── color.py

├── debug.py

├── display.py

├── encrypt.py

├── hashing.py

├── listify.py

├── module_docs.py

├── module_docs_fragments

├── path.py

├── shlex.py

├── unicode.py

└── vars.py



1 directory, 14 files

Jalur Pencarian

Ketika Anda mengimpor modul, Python akan melalui algoritma pencarian berdasarkan jalur pencarian, yang merupakan daftar direktori untuk memulai pencarian. Jalur pencarian adalah daftar direktori yang tersedia melalui sys.path, dan Anda dapat memanipulasinya secara dinamis [menambah, menghapus atau memindahkan item di jalur pencarian]. Direktori site-packages selalu ada.

Untuk mengimpor modul path.py dari ansible/utils, Anda harus menggunakan perintah berikut:

import ansible.utils.path

Jika Anda juga ingin menggunakan modul os.oath standar, Anda akan menggunakan perintah berikut:

import os.path

Sekarang Anda dapat menggunakan salah satu atau kedua modul jalur tanpa konflik karena perbedaan namespace yang mereka miliki.

Menjelajahi Perpustakaan Standar

Perpustakaan standar memiliki banyak paket. Ada baiknya menjelajahinya kapan pun Anda perlu menyelesaikan beberapa tugas dan Anda tidak yakin caranya. Ada kemungkinan yang sangat tinggi bahwa untuk tugas tujuan umum seperti matematika, integrasi shell, integrasi OS, manipulasi string, jaringan dan format file umum, ada paket yang dirancang dengan baik, berperforma baik dan teruji di perpustakaan standar.

Anda benar-benar dapat mempercayai paket perpustakaan standar karena ini adalah masalah besar untuk masuk ke perpustakaan standar. Baik paket itu dirancang oleh pengembang inti Python atau sangat ditinjau ulang dan sering digunakan di lapangan sebagai perpustakaan pihak ketiga sebelum membuatnya menjadi perpustakaan standar.

Berikut ini semua paket di perpustakaan standar yang diatur berdasarkan topik.

PyPI

Perpustakaan standar luar biasa, tetapi akan sering ada beberapa fungsi khusus yang Anda butuhkan yang tidak standar. Itu tidak berarti Anda harus menulisnya dari awal. Python memiliki komunitas yang aktif dan aktif yang mengembangkan dan berbagi banyak kode dengan bebas. Masuk PyPI - Indeks Paket Python. PyPI menjadi tuan rumah semua paket yang tersedia untuk umum dan menyediakan toko serba ada untuk menjelajahinya.

Menjelajahi PyPI

PyPI mengatur paket-paket dalam indeks yang dapat dijelajahi. Anda dapat menelusuri dan mencari berdasarkan topik, lingkungan, kerangka kerja, pengembangan, status, audiens yang dituju, lisensi, bahasa alami, bahasa pemrograman [ya, ada paket Python yang mendukung banyak bahasa pemrograman], dan sistem operasi.

Ada juga perbedaan antara paket Python 2 dan Python 3, dan Anda dapat melihat seberapa populer sebuah paket dengan jumlah unduhan terbaru. Sebagai contoh, paket ansible tersedia di PyPI, dan berikut ini metadatanya:

Downloads [All Versions]:

5528 downloads in the last day

72037 downloads in the last week

289967 downloads in the last month

Author: Ansible, Inc.

Home Page: //ansible.com/

Bug Tracker: //github.com/ansible/ansible/

License: GPLv3

Categories

Development Status :: 5 - Production/Stable

Environment :: Console

Intended Audience :: Developers

Intended Audience :: Information Technology

Intended Audience :: System Administrators

License :: OSI Approved :: GNU General Public License v3 or later [GPLv3+]

Natural Language :: English

Operating System :: POSIX

Programming Language :: Python :: 2.6

Programming Language :: Python :: 2.7

Topic :: System :: Installation/Setup

Topic :: System :: Systems Administration

Topic :: Utilities

Package Index Owner: James.Laska, jimi, ansible

Package Index Maintainer: mpdehaan, badger

DOAP record: ansible-2.0.0.2.xml

Menginstal Paket

Ada dua cara untuk menginstal paket dari PyPI. Anda dapat mengunduh paket dan menjalankan python setup.py install. Tetapi cara modern adalah menggunakan pip, setuptools dan wheel. Pip adalah singkatan dari Pip Installs Packages [ya, ini salah satu akronimnya] dan merupakan front end Anda untuk instalasi. Jika Anda memiliki Python 2 >=2.7.9 atau Python 3 >=3.4 diinstal dari python.org, Anda sudah memiliki pip dan setuptools, tetapi akan perlu untuk meng-upgrade ke versi terbaru: pip install -U pip setuptools atau python -m pip install -U pip setuptools pada Windows.

Gunakan pip untuk menginstal wheel: pip install wheel.

Jika Anda menggunakan versi Python yang lebih lama, pertimbangkan untuk meningkatkan. Jika Anda tidak dapat melakukannya, Anda harus menginstal pip, setuptools dan wheel sendiri. Periksa instruksinya.

Paket Python selalu diinstal di sebuah lingkungan. Praktik umum yang tidak akan saya bahas di sini adalah menggunakan lingkungan virtual untuk mengelola beberapa instalasi independen Python dengan penterjemah yang berbeda dan/atau kumpulan paket terinstal yang berbeda.

Praktik Terbaik

Otoritas pengemasan Python memberikan banyak panduan tentang praktik terbaik seputar pengemasan. Ini penting karena merupakan area pengembangan aktif pengembangan dan rekomendasi berevolusi dengan cepat.

Juga, jika Anda ingin melakukan sesuatu yang istimewa seperti menginstal paket dari repositori alternatif, bukan PyPI atau menggunakan pip dengan cara yang lebih canggih, Anda akan menemukan diskusi yang bagus dan saran praktis.

Kesimpulan

Ketika Anda seorang pemula Python, Anda belajar bahasa inti dan bersenang-senang bermain dengannya. Anda akan segera menemukan perpustakaan standar, dan ketika Anda mendapatkan lebih banyak pengalaman, Anda akan mendapatkan lebih banyak manfaat dari kekayaannya.

Tahap berikutnya dalam evolusi Anda sebagai Pythonista adalah untuk menggabungkan kedahsyatan besar yang telah diberikan Python pada PyPI ke dalam sistem Anda. Paket sebagai unit penyebaran kode Python yang dapat digunakan kembali memungkinkan ekosistem ini.

Apa itu package di Python?

Secara umum, packages bisa diartikan sebagai sekumpulan modul atau file Python yang ditulis dengan [.py]. Adapun isi dari modul tersebut terdiri dari kumpulan fungsi, class, variabel, maupun kode-kode Python lainnya.

Library Python apa saja?

Macam-macam library python.
TensorFlow. ... .
2. NumPy. ... .
3. SciPy. ... .
Pandas. ... .
Matplotlib. ... .
6. Keras. ... .
7. SciKit-Learn. ... .
PyTorch..

Apakah fungsi dari import dalam python?

import digunakan untuk mengimpor sebagaian isi modul dan bukan keseluruhan isi modul. Bila kita menggunakan format import *, maka semua isi modul akan dimuat. Bedanya dengan format import standar adalah di sini kita dapat menggunakan semua isi modul tanpa menggunakan operator titik.

Apa itu namespace pada python?

Sebuah namespace adalah pemetaan dari nama ke objek. Sebagian besar ruang nama namespace saat ini diimplementasikan sebagai kamus dictionary Python, tetapi itu biasanya tidak terlihat dengan cara apa pun [kecuali untuk kinerja], dan itu mungkin berubah di masa depan.

Bài mới nhất

Chủ Đề