ImportError: DLL load failed while importing _gdal in QGIS on Windows
ImportError: DLL load failed while importing _gdal in QGIS on Windows
Salinan kedua GDAL berada di PATH, sehingga Windows memuat DLL-nya alih-alih DLL milik QGIS. Temukan folder yang berisi gdal*.dll, keluarkan folder yang bukan milik QGIS dari PATH, lalu keluar dan masuk kembali ke Windows.
ImportError: DLL load failed while importing _gdal: The specified module could not be found.
On Windows, with Python >= 3.8, DLLs are no longer imported from the PATH.
If gdalXXX.dll is in the PATH, then set the USE_PATH_FOR_GDAL_PYTHON=YES environment variable
to feed the PATH into os.add_dll_directory().
Berlaku untuk Windows, QGIS 3.16 dan yang lebih baru, serta Python 3.8 atau yang lebih baru yang melakukan import from osgeo import gdal. Error yang sama juga muncul sebagai "Couldn't load plugin 'processing'" di panel QGIS Log Messages.
Mengapa ini terjadi
Tiga baris terakhir adalah petunjuk yang dicetak GDAL ketika import gagal. Baris-baris tersebut bukan penyebabnya. Itulah sebabnya pengaturan variabel tersebut sering kali tidak mengubah apa pun.
Python 3.8 berhenti mencari DLL ekstensi di PATH. GDAL mengatasi hal ini melalui osgeo/__init__.py: file tersebut menelusuri PATH, lalu untuk setiap folder yang berisi gdal*.dll atau libgdal*.dll, memanggil os.add_dll_directory(). Microsoft tidak menjamin urutan antara folder yang ditambahkan dengan cara tersebut. Jadi, jika ada dua salinan, salinan yang salah bisa menang, dan DLL-nya tidak cocok dengan modul _gdal yang dikirim bersama QGIS. Penyebab kedua, yang lebih jarang, adalah python.exe biasa atau proses PyCharm di luar lingkungan QGIS, sehingga tidak ada folder GDAL yang didaftarkan. Penyebab ketiga adalah instalasi OSGeo4W yang setengah diperbarui dan membawa gdal serta gdal-dev.
Untuk membedakannya, jalankan pemeriksaan pada langkah 1. Dua folder atau lebih berarti penyebab pertama. Tidak ada folder berarti penyebab kedua.
Solusinya
List every folder on PATH that holds a GDAL DLL
Buka OSGeo4W Shell dari folder QGIS di menu Start, lalu jalankan perintah ini. Perintah tersebut mengulangi logika milik GDAL sendiri:
python -c "import os,glob;print('\n'.join(p for p in os.environ['PATH'].split(';') if p and (glob.glob(os.path.join(p,'gdal*.dll')) or glob.glob(os.path.join(p,'libgdal*.dll')))))"
Remove the copies that are not QGIS
Anaconda, Miniconda, instalasi QGIS atau OSGeo4W kedua, atau paket GIS lain yang menambahkan GDAL miliknya sendiri ke PATH. Buka Start, ketik "environment variables", buka Edit the system environment variables, lalu Environment Variables, kemudian Path. Hapus entri-entri tersebut. Keluar dari Windows dan masuk kembali, agar setiap proses menggunakan PATH yang baru.
Start QGIS from its own shortcut
Jangan dari shell tempat Anda sudah menjalankan skrip activate milik lingkungan lain, dan jangan dari sesi OSGeo4W shell kedua. Shell yang menetapkan path gdal-dev akan meneruskannya ke QGIS.
For an outside interpreter, borrow the QGIS environment
Jalankan skrip Anda di dalam OSGeo4W Shell, atau melalui python-qgis.bat di folder QGIS bin. Cara ini mendaftarkan folder DLL yang benar sebelum Python dimulai.
Jika cara tersebut tidak berhasil
- Tetapkan variabel tersebut, tetapi jangan berharap banyak. Di QGIS: Settings, lalu Options, kemudian System, lalu grup Environment. Centang kotak custom variables, tambahkan
USE_PATH_FOR_GDAL_PYTHONdengan nilaiYES, lalu mulai ulang QGIS. Ini membantu ketika folder yang benar ada di PATH dan tidak ada salinan yang bersaing. Jika ada dua salinan GDAL, cara ini tidak membantu. - Di conda, gunakan
gdalhanya dari conda-forge, di lingkungan baru, dan jangan pernah mencampurkan wheel GDAL dari pip ke dalamnya. - Perbaiki instalasinya: jalankan kembali installer OSGeo4W dan instal ulang paket
gdalsertaqgis, atau instal ulang QGIS dari installer mandiri. Ini adalah cara tercepat untuk keluar dari instalasi OSGeo4W yang setengah diperbarui.
Baca selanjutnyaAI Segmentation untuk QGIS: panduan lengkap

