Menu

Module dan import di Python: import, from-import, pip, dan package

Cara kerja sistem module Python: menulis module sendiri, meng-import dari module itu, dan memakai pip untuk meng-install package pihak ketiga.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Satu file adalah satu module

Begitu kode Python-mu tumbuh melebihi satu skrip, kamu akan ingin memecahnya ke beberapa file. Sistem module Python sederhana: file .py apa pun otomatis menjadi module yang bisa di-import dengan namanya.

Misalnya kamu punya file util.py:

# util.py
def greet(name):
    return f"Hello, {name}"

PI = 3.14159

Dari file lain di direktori yang sama, main.py, kamu bisa memakainya:

# main.py
import util

print(util.greet("Ada"))
print(util.PI)

Jalankan python3 main.py, dan Python akan menemukan util.py, menjalankannya sekali, lalu menyediakan semua yang didefinisikan di level teratas (fungsi, variabel, class) sebagai atribut module util.

Tiga bentuk import

Import seluruh module. Isinya diakses lewat nama module:

Import nama tertentu. Nama itu langsung tersedia:

Import dengan alias. Berguna saat nama module panjang atau saat dua module punya nama yang sama:

import numpy as np
import pandas as pd

# Now use np.array(...), pd.DataFrame(...), etc.

Ada bentuk keempat, from math import *, yang menarik semuanya ke namespace-mu. Hindari bentuk ini di luar eksperimen di REPL: kamu jadi tidak bisa tahu dari mana sebuah nama berasal, dan bentrok nama terjadi diam-diam.

Kapan import dijalankan

Python mengeksekusi kode level teratas sebuah module yang di-import sekali saja, yaitu saat pertama kali module itu di-import dalam sebuah program. Import berikutnya untuk module yang sama mengembalikan versi yang sudah dimuat. Jadi kode ini:

# setup.py
print("setup module loading...")
VALUE = 42
# main.py
import setup
import setup  # imported twice - but "loading" only prints once
print(setup.VALUE)

Hanya mencetak "setup module loading..." sekali. Ini penting: kalau kamu menaruh efek samping (seperti membuka file atau mencetak) di level teratas module, efek itu terjadi saat import, dan biasanya bukan itu yang kamu mau. Taruh di dalam fungsi.

Standard library

Python datang dengan standard library berisi banyak module. Kamu sudah melihat beberapa di antaranya. Ini beberapa yang akan sering kamu pakai:

  • math: sqrt, sin, log, konstanta seperti pi dan e.
  • random: angka acak, pilihan acak, pengacakan urutan.
  • datetime: tanggal dan waktu.
  • json: membaca dan menulis JSON.
  • os, os.path: path dan operasi sistem file.
  • pathlib: penanganan path modern, sering lebih enak daripada os.path.
  • re: regular expression.
  • collections: tipe koleksi khusus (Counter, defaultdict, deque, dan lain-lain).
  • itertools, functools: pembantu untuk iterator dan fungsi.
  • csv: membaca dan menulis file CSV.

Standard library sudah ter-install, tidak ada yang perlu di-install dengan pip.

Package pihak ketiga dan pip

Untuk hal yang tidak dicakup standard library, Python Package Index (PyPI) menyimpan ratusan ribu package. Install dengan pip:

pip install requests
pip install pandas
pip install --upgrade requests
pip uninstall requests

Setelah ter-install, package itu di-import seperti module lainnya:

import requests

response = requests.get("https://api.example.com/data")
print(response.status_code)

Beberapa tips supaya pengelolaannya tetap rapi:

Pakai virtual environment

Meng-install semuanya secara global hanya menimbulkan masalah. Proyek yang berbeda butuh versi yang berbeda; sebagian package bergantung pada versi Python tertentu; instalasi global butuh hak admin di sebagian sistem. Virtual environment adalah instalasi Python terisolasi khusus untuk satu proyek:

python3 -m venv .venv
source .venv/bin/activate    # macOS/Linux
.venv\Scripts\activate       # Windows

pip install requests

Selama venv aktif, pip meng-install ke folder proyek, bukan ke sistemmu. Nonaktifkan dengan deactivate setelah selesai.

Kunci versi dependensimu

Simpan daftar package yang ter-install supaya orang lain (termasuk dirimu di masa depan) bisa membuat ulang environment yang sama:

pip freeze > requirements.txt

Lalu nanti:

pip install -r requirements.txt

Alat seperti Poetry, pipenv, dan uv menangani ini dengan lebih nyaman, tapi alur kerja pip + requirements.txt biasa masih cukup untuk belajar.

Begitu kamu punya fungsi yang ingin dipakai ulang di beberapa file, taruh fungsi itu di module tersendiri. Konvensi penamaannya:

  • Nama file sebaiknya lower_snake_case.py.
  • Fungsi dan variabel level module juga lower_snake_case.
  • Class memakai PascalCase.
# shopping.py
PRICES = {"apple": 0.50, "bread": 2.00}

def total(items):
    return sum(PRICES[item] for item in items)
# main.py
from shopping import total, PRICES

print(total(["apple", "bread"]))
print(PRICES)

Kalau dua file di folder yang sama saling meng-import, kamu bisa tanpa sengaja membuat circular import. Solusi biasanya adalah memindahkan kode bersama ke file ketiga yang di-import oleh keduanya.

Package: folder berisi module

Begitu module-mu lebih dari beberapa, kelompokkan ke dalam sebuah package, yaitu folder yang berisi file __init__.py:

myproject/
├── main.py
└── utils/
    ├── __init__.py
    ├── text.py
    └── numbers.py

Lalu:

from utils.text import slugify
from utils import numbers

print(slugify("Hello, World"))
print(numbers.mean([1, 2, 3]))

__init__.py boleh kosong; keberadaannya yang membuat utils menjadi package. Python modern juga mendukung "namespace package" tanpa __init__.py, tapi untuk permulaan, versi yang eksplisit lebih jelas.

Daftar periksa singkat saat import gagal

  • "ModuleNotFoundError: No module named X". Package-nya belum ter-install, atau kamu menjalankan Python dari interpreter yang berbeda dengan yang kamu pakai saat pip install. Di venv, pastikan venv-nya sudah aktif.
  • "ImportError: cannot import name Y from X". Module-nya ada, tapi nama yang kamu minta tidak ada di sana. Periksa salah ketik dan lihat isi module yang sebenarnya.
  • "Circular import". Dua module saling meng-import. Pindahkan kode bersama ke module ketiga.

Berikutnya: meng-install package pihak ketiga

Module buatanmu sendiri bisa membawamu jauh, tapi kebanyakan proyek sungguhan juga memakai library dari PyPI: requests, pandas, sebuah framework test. Halaman berikutnya membahas pip, cara meng-install package dengan rapi, dan cara mencatat apa saja dependensi proyekmu.

Pertanyaan yang sering diajukan

Apa itu module di Python?

Module adalah file .py apa pun. File Python otomatis menjadi module, dan kamu meng-import-nya dengan namanya (tanpa .py). Standard library adalah kumpulan besar module bawaan seperti math, json, dan datetime yang tersedia di setiap instalasi Python.

Apa bedanya import X dan from X import Y?

import X meng-import seluruh module, dan kamu mengakses isinya dengan X.something. from X import Y hanya menarik Y ke namespace-mu sehingga kamu bisa langsung memakainya sebagai Y. Bentuk pertama lebih aman (tidak ada bentrok nama); bentuk kedua lebih ringkas.

Bagaimana cara meng-install package Python?

Jalankan pip install package_name di terminal. pip adalah package manager Python dan sudah disertakan di instalasi modern. Untuk mengisolasi proyek, buat virtual environment lebih dulu supaya package yang di-install tidak bocor antarproyek.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai