Handbook AI Engineering
Bagian I - Bab 2

Manajemen Lingkungan dan Dependensi

Virtual environment, pengelolaan requirements.txt, dan diagnosis sistematis untuk ModuleNotFoundError.

Apa yang Akan Kamu Pahami Setelah Bab Ini

Bab ini menjawab satu pertanyaan yang hampir pasti pernah kamu alami: "Kenapa kode yang sama bisa berjalan di satu komputer tapi error di komputer lain?"

Jawabannya hampir selalu bukan pada kodenya, tapi pada lingkungan tempat kode itu dijalankan. Bab ini menjelaskan mengapa perbedaan lingkungan bisa menyebabkan masalah, dan bagaimana cara mengendalikannya secara sistematis.

2.1 Mengapa Isolasi Lingkungan Diperlukan

Ketika kamu menginstal sebuah library Python, library itu tidak hanya berdiri sendiri. Ia membawa serta sejumlah library lain yang dibutuhkannya untuk bekerja, disebut dependencies. Setiap dependency ini memiliki versi tertentu.

Masalah muncul ketika dua proyek yang berbeda membutuhkan versi yang berbeda dari library yang sama.

Ini bukan masalah yang hipotetis. Dalam praktik AI Engineering, kamu akan sering bekerja dengan beberapa proyek sekaligus, masing-masing mungkin menggunakan versi LangChain, NumPy, atau library lain yang berbeda. Tanpa isolasi, menginstal library untuk satu proyek bisa merusak proyek yang lain.

Virtual environment menyelesaikan masalah ini dengan cara yang sederhana: setiap proyek mendapatkan instalasi Python dan library-nya sendiri yang sepenuhnya terpisah dari proyek lain.

2.2 Cara Kerja Virtual Environment

Python menyediakan modul venv secara bawaan, tidak perlu menginstal apapun untuk membuatnya. Ketika kamu membuat virtual environment, Python membuat sebuah direktori baru yang berisi salinan interpreter Python dan ruang kosong untuk menginstal library.

Ketika virtual environment diaktifkan, semua perintah Python dan pip yang kamu jalankan di terminal akan menggunakan instalasi yang ada di dalam direktori itu, bukan instalasi Python global di sistem.

proyek-ai/
├── main.py
├── requirements.txt
├── .env
├── .gitignore
└── venv/                    (dibuat oleh: python -m venv venv)
    ├── bin/ atau Scripts/    (python, pip, activate)
    ├── lib/                  (semua library terinstal)
    └── pyvenv.cfg            (konfigurasi: versi Python, lokasi Python global)
Jangan Commit venv/

Direktori venv/ tidak boleh dimasukkan ke dalam Git. Ukurannya bisa mencapai ratusan megabyte dan tidak perlu dibagikan ke orang lain, mereka bisa membuatnya sendiri dari file requirements.txt. Pastikan venv/ sudah ada di dalam .gitignore (dibahas lebih detail di Bab 4).

2.3 Siklus Kerja Virtual Environment

Ada empat perintah utama yang perlu dikuasai. Keempat perintah ini membentuk siklus kerja yang akan kamu ulang di setiap proyek baru.

1. Membuat Virtual Environment (Sekali per Proyek Baru)

Membuat direktori venv/ di dalam folder proyek kamu. Python yang digunakan adalah Python yang sedang aktif di sistem saat perintah ini dijalankan.

# Windows
python -m venv venv

# Mac/Linux
python3 -m venv venv

2. Mengaktifkan Virtual Environment (Setiap Kali Membuka Terminal Baru)

Setelah diaktifkan, tanda (venv) akan muncul di sebelah kiri prompt terminal. Ini adalah sinyal visual bahwa kamu sudah berada di dalam lingkungan yang terisolasi.

# Windows
venv\Scripts\activate

# Mac/Linux
source venv/bin/activate

3. Menginstal Dependencies (Setelah Aktivasi, atau Saat Ada Library Baru)

Jika proyek memiliki file requirements.txt, gunakan perintah pertama untuk menginstal semua library sekaligus. Jika tidak, instal library satu per satu dengan perintah kedua.

# Dari requirements.txt
(venv) pip install -r requirements.txt

# Library tunggal
(venv) pip install langchain pandas

4. Menyimpan Daftar Dependencies (Setiap Kali Menginstal Library Baru)

Perintah ini membuat atau memperbarui file requirements.txt dengan daftar semua library yang terinstal beserta versinya. File inilah yang dibagikan ke rekan tim, bukan direktori venv/ itu sendiri.

# Windows & Mac/Linux
(venv) pip freeze > requirements.txt

2.4 Memahami File requirements.txt

File requirements.txt adalah daftar tertulis dari semua library yang dibutuhkan proyek kamu untuk berjalan, beserta versi spesifiknya. Ini adalah cara standar untuk memastikan siapapun yang menjalankan proyekmu mendapatkan lingkungan yang identik.

Berikut adalah contoh file requirements.txt untuk proyek AI Engineering yang umum, beserta penjelasan fungsi setiap library.

Library Fungsi Kategori
pandas==2.2.0Manipulasi dan analisis data tabular untuk membersihkan data sebelum masuk ke pipeline AIData
numpy==1.26.4Operasi array numerik berkecepatan tinggi, dipakai saat bekerja dengan embeddingData
langchain==0.3.0Framework orkestrasi untuk aplikasi berbasis LLM: chaining, retrieval, agentAI
langchain-google-genai==2.0.0Integrasi LangChain dengan model Gemini dari GoogleAI
pinecone==5.0.0Client untuk vector database Pinecone, menyimpan dan mencari embedding untuk RAGAI
fastapi==0.115.0Framework untuk membangun API backend, mengekspos sistem AI sebagai endpoint HTTPInfrastruktur
uvicorn==0.30.0Server ASGI untuk menjalankan aplikasi FastAPI, selalu diinstal bersama FastAPIInfrastruktur
python-dotenv==1.0.1Membaca variabel dari file .env ke environment Python, wajib untuk manajemen API Key (Bab 3)Utilitas
requests==2.32.0Library standar untuk HTTP request ke API eksternal, dipakai di Bab 1Utilitas

2.5 Mendiagnosis ModuleNotFoundError

ModuleNotFoundError adalah error yang paling sering muncul di minggu pertama dan paling mudah diselesaikan, jika kamu tahu urutan langkah diagnosisnya. Hampir selalu, penyebabnya bukan library yang belum terinstal, tapi virtual environment yang salah atau tidak aktif.

Alur diagnosis ModuleNotFoundError
Nama Package Tidak Selalu Sama dengan Nama Import

Ada satu hal yang sering membingungkan pemula: nama package yang diinstal via pip tidak selalu sama dengan nama yang digunakan saat import. Selalu cek dokumentasi resmi jika import gagal meski library sudah terinstal.

Perintah pip install Nama saat import Keterangan
pip install pandasimport pandasSama persis
pip install python-dotenvfrom dotenv import load_dotenvNama pip mengandung "python-", nama import tidak
pip install pillowfrom PIL import ImageNama pip sama sekali berbeda dari nama import
pip install scikit-learnimport sklearnTanda hubung dihilangkan, nama dipersingkat
pip install beautifulsoup4from bs4 import BeautifulSoupNama pip mengandung versi, nama import dipersingkat
pip install langchain-google-genaifrom langchain_google_genai import ...Tanda hubung diganti underscore saat import
pip install fastapifrom fastapi import FastAPISama, tapi nama class berbeda dari nama module

Kesalahan Umum

Jangan pernah menjalankan pip install tanpa mengaktifkan venv terlebih dahulu.

Jika kamu menginstal library ke Python global, library itu tidak akan tersedia di dalam virtual environment proyekmu. Selalu pastikan (venv) muncul di terminal sebelum menjalankan perintah pip apapun. Ini adalah sumber kebingungan nomor satu di minggu pertama bootcamp.

Jangan menyertakan direktori venv/ di dalam Git.

Direktori venv/ bisa berukuran ratusan megabyte dan berisi path yang spesifik untuk komputermu. Mengunggahnya ke GitHub tidak hanya boros storage, tapi juga tidak akan berfungsi di komputer orang lain. Pastikan venv/ sudah tercantum di .gitignore (dibahas di Bab 4).

pip freeze menangkap semua library, termasuk yang tidak langsung kamu instal.

Setiap library yang kamu instal biasanya membawa library lain sebagai dependensinya. Ketika kamu menjalankan pip freeze, semua library itu ikut tercatat. Ini normal file requirements.txt yang dihasilkan memang lebih panjang dari yang kamu instal secara manual.

Setiap kali membuka terminal baru, periksa apakah (venv) sudah aktif.

Terminal baru tidak otomatis mengaktifkan virtual environment dari sesi sebelumnya. Ini adalah hal pertama yang perlu dicek setiap kali kamu mulai sesi coding sebelum menjalankan kode apapun. Jika (venv) belum muncul, jalankan perintah aktivasi dulu.

Perbarui requirements.txt setiap kali menginstal library baru.

Kebiasaan ini memastikan siapapun yang meng-clone proyekmu bisa mendapatkan lingkungan yang identik hanya dengan satu perintah: pip install -r requirements.txt. Jika kamu lupa memperbarui file ini, rekan tim atau sistem deployment akan mendapat error yang sulit dilacak penyebabnya.

Ringkasan Bab 2

Checklist Pemahaman
  • Saya memahami mengapa konflik dependensi bisa terjadi dan bagaimana virtual environment menyelesaikannya.
  • Saya bisa membuat virtual environment baru menggunakan python -m venv venv.
  • Saya tahu cara mengaktifkan virtual environment di sistem operasi yang saya gunakan, dan tahu cara memverifikasi bahwa aktivasi berhasil.
  • Saya bisa menginstal semua dependencies dari file requirements.txt menggunakan pip install -r requirements.txt.
  • Saya bisa memperbarui requirements.txt menggunakan pip freeze setelah menginstal library baru.
  • Saya memahami bahwa nama package di pip dan nama saat import tidak selalu sama, dan tahu cara memeriksa nama yang benar.
  • Saya bisa mendiagnosis ModuleNotFoundError secara sistematis menggunakan urutan langkah yang sudah dipelajari di bab ini.
  • Saya tahu bahwa direktori venv/ tidak boleh dimasukkan ke dalam Git, dan sudah menambahkannya ke .gitignore.