Jika Python mengimpor berkas dari proyek Anda alih-alih paket yang Anda instal, pertama-tama identifikasi berkas yang dimuat oleh Python. Di macOS, periksa interpreter yang aktif, jalur modul yang diimpor, serta berkas atau folder proyek apa pun yang memiliki nama yang sama. Ganti nama berkas lokal yang berkonflik, hapus cache bytecode lamanya jika perlu, lalu jalankan proyek dengan lingkungan Python yang diinginkan.

1. Periksa Python dan modul mana yang sedang digunakan

Di Terminal, buka folder proyek dan minta Python untuk melaporkan asal modul tersebut. Ganti requests dengan nama impor yang gagal; misalnya, paket yang diinstal sebagai Pillow diimpor sebagai PIL.

cd "/path/to/your/project"
command -v python3
python3 -c 'import sys, importlib.util; name = "requests"; print("Python:", sys.executable); print("Module:", importlib.util.find_spec(name))'

Hasil dengan origin di bawah direktori proyek Anda, seperti .../requests.py, mengindikasikan adanya berkas lokal yang membayangi (shadowing). Python menempatkan direktori skrip atau direktori kerja saat ini di awal jalur pencariannya, sehingga modul lokal dengan nama yang sama dapat diprioritaskan daripada paket yang terinstal. Dokumentasi jalur pencarian modul Python

Jika perintah melaporkan None, interpreter tersebut tidak dapat menemukan modul dengan nama itu. Jika perintah menunjukkan lokasi di site-packages, tabrakan mungkin terjadi di tempat lain: aplikasi Anda mungkin menjalankan interpreter yang berbeda, nama impor mungkin berbeda dari nama instalasi paket, atau kesalahan mungkin muncul di dalam dependensi paket.

2. Temukan dan ganti nama konflik lokal

Cari berkas di dalam proyek yang dinamai sesuai dengan nama impor, seperti requests.py, atau direktori dengan nama tersebut. Periksa juga nama-nama pustaka standar yang umum seperti email.py, json.py, atau typing.py. Ganti nama berkas atau direktori tersebut menjadi nama yang spesifik untuk proyek, lalu perbarui semua impor yang merujuk ke modul lokal tersebut. Hindari hanya mengganti namanya menjadi nama paket umum atau pustaka standar lainnya.

Jika berkas yang berkonflik tersebut memang modul proyek yang disengaja, pertahankan modul tersebut tetapi beri nama yang unik dan impor melalui struktur paket proyek Anda. Berkas proyek yang kebetulan memiliki nama yang sama dengan paket pihak ketiga sangat berpotensi menyebabkan impor parsial yang membingungkan atau kesalahan atribut yang hilang (missing attributes).

Setelah mengganti nama, hapus hanya direktori __pycache__ yang cocok jika masih ada di samping berkas lama. Python biasanya memeriksa waktu modifikasi berkas sumber dan memperbarui cache bytecode secara otomatis; menghapus cache yang cocok adalah langkah pembersihan, bukan pengganti untuk menyelesaikan konflik nama. Dokumentasi modul dan bytecode Python

3. Pastikan paket tersebut milik Python yang Anda jalankan

Di macOS, memiliki lebih dari satu instalasi Python atau lingkungan proyek adalah hal yang lumrah. Eksekusi yang ditampilkan sebagai sys.executable adalah interpreter di balik perintah yang baru saja Anda jalankan. Instal paket melalui interpreter tersebut agar pip dan Python tidak sengaja mengarah ke lingkungan yang berbeda:

python3 -m pip show requests
python3 -m pip install requests

Gunakan nama distribusi paket dengan pip show dan nama impornya dengan Python. Keduanya bisa berbeda; misalnya, Pillow umumnya diimpor sebagai PIL. Hasil “package not found” dari pip show berarti distribusi tersebut tidak terinstal untuk interpreter yang digunakan oleh perintah tersebut.

Untuk lingkungan khusus proyek, buat dan aktifkan lingkungan virtual dari direktori proyek, lalu instal dependensi di sana:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install requests
python -c 'import requests; print(requests.__file__)'

Dengan lingkungan yang aktif, python akan mengarah ke interpreternya. Perintah terakhir mencetak jalur berkas aktual yang dimuat; periksa apakah lokasinya berada di bawah .venv dan bukan di tingkat atas proyek Anda. Lingkungan virtual mengisolasi paket proyek dari lingkungan lain dan dibuat dengan python -m venv. Dokumentasi venv Python

4. Periksa penimpaan jalur (path overrides) dan jalankan ulang secara bersih

Jika modul masih mengarah ke lokasi yang tidak diharapkan, periksa jalur pencarian Python dan penimpaan PYTHONPATH apa pun:

python -c 'import os, sys; print("PYTHONPATH:", os.environ.get("PYTHONPATH")); print("sys.path:"); print("\n".join(sys.path))'

sys.path diinisialisasi menggunakan PYTHONPATH dan pengaturan standar tergantung instalasi; dalam pemanggilan umum, Python juga menambahkan direktori skrip atau direktori kerja saat ini di bagian awal. Hapus pengaturan PYTHONPATH yang tidak diinginkan dari shell saat ini dengan unset PYTHONPATH, lalu jalankan kembali diagnostik. Untuk pengaturan persisten, periksa berkas startup shell tempat pengaturan tersebut ditetapkan dan hapus atau koreksi ekspor tersebut. Dokumentasi sys.path Python

Mulai ulang proses Python setelah mengganti nama berkas atau mengubah lingkungan: interpreter yang sedang berjalan dapat mempertahankan modul yang telah diimpornya di dalam memori. Kemudian ulangi pemeriksaan asal (origin) dan jalankan perintah atau aplikasi dengan cara yang biasa Anda lakukan. Jika asalnya sudah benar tetapi impor masih gagal, baca traceback lengkapnya; hal ini mungkin menunjukkan adanya dependensi yang hilang atau kesalahan yang terjadi saat paket dimuat, bukan karena tabrakan nama.

Sumber