Masalah dengan impor qgis.core saat menulis skrip PyQGIS yang berdiri sendiri

18

Saya mencoba untuk menulis skrip python yang berdiri sendiri di windows 7 yang menggunakan qgis.core dan berbagai perpustakaan qgis lainnya.

Saya telah menemukan pertanyaan lama tentang hal ini di sini: Menulis skrip Python mandiri menggunakan PyQGIS? dan mengikuti sarannya, dengan menggunakan panduan ini di sini: http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/intro.html#python-applications

Kode yang disarankan ada:

set PYTHONPATH=c:\qgispath\python

diikuti oleh:

set PATH=C:\qgispath;%PATH%

Saya menemukan bahwa IDLE tidak menyukai "set di awal, jadi kode saya terlihat seperti ini:

PYTHONPATH="C:\OSGeo4W64\apps\qgis\python"
PATH="C:\OSGeo4W64\apps\qgis\python\qgis\core;%PATH%"
import qgis.core

dan saya mendapatkan:

Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core

Saya telah mencoba setiap varian jalur yang dapat saya pikirkan termasuk menghapus;% PATH% "di akhir (yang terlihat sedikit berlebihan) tetapi belum dapat menemukan informasi lebih lanjut. Adakah yang tahu di mana saya berada? salah?

EDIT:

Setelah melihat komentar Luigi Pirelli, saya sekarang mencoba:

>>> PYTHONPATH="C:/OSGEO4~1/apps/qgis/./python\qgis"
>>> import qgis.core

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core
>>> PATH="C:\OSGeo4W64\apps\qgis\python\qgis\core;%PATH%"
>>> import qgis.core

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core
>>> PATH="C:/OSGEO4~1/apps/qgis/./python\qgis\core;%PATH%"
>>> import qgis.core

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core
>>> 
pengguna24956
sumber
Bisakah Anda memodifikasi judul pertanyaan Anda seperti garis besarnya masalah yang Anda hadapi?
SS_Rebelious
atur PYTHONPATH sebagai nilai yang bisa Anda baca dengan mengetik "qgis" di Konsol Python QGIS ... berapa nilainya? Dalam kasus saya: <module 'qgis' from 'C: / OSGEO4 ~ 1 / apps / qgis-dev /./ python \ qgis_ init_ .pyc '> => Saya telah menambahkan ke PYTHONPATH path: "C: / OSGEO4 ~ 1 / apps / qgis-dev /./ python \ qgis "
Luigi Pirelli
Judul diubah, terima kasih, saya akan mencoba ini dan melaporkan kembali di bagian utama dari pertanyaan
user24956
1
Masih tidak berhasil, saya telah mencoba banyak permutasi dari PATH dan PYTHONPATH tetapi tidak berhasil.
user24956

Jawaban:

12

Jika Anda telah menginstal QGIS melalui OSGeo4W, saya sarankan Anda untuk mengikuti alur kerja ini (saya baru saja mengujinya pada Windows 7):

  1. Buka OSGeo4W Shell . Start->All programs->OSGeo4W->OSGeo4W Shell.

  2. Tetapkan variabel lingkungan . Cara pilihan saya adalah dengan mengeksekusi file bat ini (diperbarui 2016.11.03: file bat ini ) dari OSGeo4W Shell. Seperti yang Anda lihat, file menetapkan variabel lingkungan dengan cara ini:

    set PYTHONPATH=%OSGEO4W_ROOT%\\apps\\qgis\\python
    set PATH=%OSGEO4W_ROOT%\\apps\\qgis\\bin;%PATH%

    Tentu saja, Anda perlu memeriksa sendiri apakah jalur itu ada di OS Anda dan sesuaikan jika perlu.

    Jadi, unduh file .bat dan jalankan dengan mengaksesnya dari OSGeo4W Shell dan menekan ENTER.

    masukkan deskripsi gambar di sini

  3. Impor pustaka PyQGIS dengan salah satu metode berikut:

    Sebuah. Masukkan juru bahasa Python. Jalankan pythondi OSGeo4W Shell dan impor perpustakaan secara manual.

    masukkan deskripsi gambar di sini

    b. Jalankan skrip Python. Jalankan python my_pyqgis_script.pydi OSGeo4W Shell. Saya akan mulai dengan yang sangat sederhana .

    masukkan deskripsi gambar di sini

Alur kerja telah diposting (dalam bahasa Spanyol) beberapa tahun yang lalu di GeoTux dan masih berfungsi. Seperti yang Anda lihat, saya tidak menyertakan variabel lingkungan dalam skrip Python, tetapi mengaturnya dalam OSGeo4W Shell.

Germán Carrillo
sumber
Hai! Saya ragu tentang itu. Kenapa var_entorno_osgeo4w.bat? Saya melakukan semua baris ini tetapi di bagian ini memberi saya kesalahan. Saya juga membaca di foruns bantuan ini dan saya masih mendapatkan error import qgis.core (dijalankan di osgeo4w shell).
Bárbara Duarte
Karena itulah nama file yang saya berikan kepada Anda untuk mengatur variabel lingkungan. Jadi, Anda pergi ke folder tempat file .bat itu berada (dalam gambar yang Anda lihat berada di dalamnya C:\dllo) dan jalankan file .bat dengan menulis nama file tersebut dan menekan Enter.
Germán Carrillo
Saya mencoba menggunakan solusi di atas - Saya mencoba menjalankan my_pygis_script.py dan mendapatkan kesalahan impor: Tidak ada modul bernama qgis.core. Bagaimana saya bisa memperbaikinya?
kflaw
Saya juga mencoba mengimpor qgis.core dalam pyscripter, dan saya mendapatkan kesalahan impor lagi: tidak ada modul bernama sip
kflaw
1
Saya mendapatkan 'Tidak ada modul bernama qgis.core' jika saya mencoba metode yang disarankan di sini. Jika saya menggunakan python.exe di dalam qgis / bin sebagai penerjemah, saya mendapatkan kesalahan 'tidak ada modul bernama situs' ketika saya mencoba mengimpor qgis.core. Saya sudah menghabiskan banyak waktu untuk menggunakan pyqgis.
Alexander
6

Saya baru saja bergulat dengan masalah yang sama, dan melihat file batch di folder OSGeo4W \ bin yang disebut python-qgis.bat . Ini adalah bagian dari instalasi paket QGIS 2.18.15 x64 berbasis OSGeo4W pada Windows 10.

Ketika dieksekusi, file batch ini membuka interpreter Python. import qgisberhasil dijalankan dari dalam.

File batch ini berisi baris (seperti dicatat oleh Germán Carrillo dalam jawaban aslinya):

set PYTHONPATH=%OSGEO4W_ROOT%\apps\qgis\python;%PYTHONPATH%

tepat sebelum penerjemah python diluncurkan.

Andy Harfoot
sumber
ini menghilangkan rasa sakit karena mengkonfigurasi secara manual variabel lingkungan, terima kasih
Hicham Zouarhi
Ini tampaknya mulai berfungsi tetapi daripada melempar kesalahan "Sintaksaksir: sintaks tidak valid" ketika menjalankan C: \ OSGEO4 ~ 1 \ apps \ Python37 \ lib \ site.py
Donny V.
Alasan saya mendapatkan kesalahan itu adalah karena saya tidak menjalankan python yang digunakan QGIS. Sekarang bekerja!
Donny V.