Bagaimana cara menginstal perpustakaan python pihak ke-3 untuk QGIS di Windows?


18

Bagaimana saya bisa menggunakan perpustakaan pihak ke-3 pada plugin QGIS di Windows? Saya telah mengembangkan sebuah plugin yang menggunakan rasterio dan numpy untuk seorang pelanggan, tetapi dia mengalami masalah dalam menginstal rasterio dan numpy.

Sebenarnya rasterio dan numpy dipasang di sistem utama Python (C: \ Python27), tapi saya perlu QGIS Python untuk mengenalinya.

Bagaimana itu bisa dilakukan?

Jawaban:


23

QGIS, sebagaimana didistribusikan oleh OSGeo4W, biasanya dilengkapi dengan instalasi Python sendiri dan paket-paketnya sendiri yang tidak tergantung pada instalasi Python "biasa" Anda.

Cara termudah untuk menginstal paket Python ke dalam distribusi OSGeo4W adalah membuka OSGeo4W Shell dan menggunakan pip dari sana. Ini akan menginstal paket ke distribusi Python menggunakan QGIS, dalam kasus saya terletak di C:\OSGeo4W64\apps\Python27\dan modul sesuai di C:\OSGeo4W64\apps\Python27\Lib\site-packages. Anda juga dapat melakukan reguler pip listdi dalam OSGeo4W Shell dan Windows Shell reguler Anda (cmd.exe) dan membandingkan hasilnya untuk melihat paket apa yang mungkin Anda lewatkan.

Jika Anda tidak ingin menginstal paket ke dua instalasi Python, Anda juga bisa mencoba mengubah PythonPath untuk memasukkan paket dari satu instalasi ke instalasi lainnya.

sunting: Jawaban ini diarahkan pada pertanyaan awal terkait pip untuk memasang modul yang akan digunakan dengan QGIS di Windows. OP telah mengedit / memperbaiki pertanyaan sehingga jawaban ini agak luas sekarang.


3
Untuk menggunakan pip di shell OSGeoW yang harus saya lakukanpython -m pip install wheel setuptools c:\path\to\rasterio-<ver>-win_amd64.whl
chip

13

Numpy diinstal secara default di QGIS (versi Standalone, versi OSGeo4W). Untuk rasterio , ada banyak masalah. Saya tahu bahwa rasterio sangat kuat dan mudah digunakan (saya menggunakannya) tetapi mengapa rasterio di plugin QGIS sementara Anda memiliki semua fungsi PyQGIS? (itu dirancang untuk shell Python atau untuk skrip, tidak untuk digunakan dengan QGIS / PyQGIS, sebagai Fiona untuk shapefile)

Di Linux atau Mac OS X (sistem Unix), QGIS menggunakan instalasi Python standar (terlepas dari QGIS) dan jika mudah untuk menginstal atau memutakhirkan modul Python (ada juga banyak kompiler yang diinstal secara default)

Di Windows, Python tidak diinstal secara default, dan QGIS menginstal versinya sendiri. Untuk menginstal modul Python murni (tanpa pustaka C, C ++) Anda memiliki solusi ( QGIS Standalone dan Modul Python , Instalasi Python setuptools ke dalam OSGeo4W Python atau Menginstal PySAL untuk OSGeo4W )

Tetapi untuk modul yang perlu dikompilasi (tidak ada kompiler secara default), itu tidak mudah. Anda dapat mencoba menyalin / menempel modul yang dipasang di QGIS Python site_folder tetapi ada masalah.

Rasterio perlu dikompilasi dengan pustaka GDAL yang diinstal dan jika Anda menginstalnya dari Christoph Gohlke Binari Windows Tidak Resmi untuk Paket Ekstensi Python , misalnya, saya tidak yakin bahwa versi GDAL yang digunakan oleh QGIS adalah sama (untuk referensi ke perpustakaan dll)

Jika Anda menggunakan numpy dan rasterio secara eksklusif, mengapa tidak menggunakan skrip independen?


Tautan 1 tidak berfungsi
nickes

dikoreksi, terima kasih dan saya memodifikasi teks untuk masalah rasterio khusus
gen

Pengguna perlu menggunakan ini dari QGIS. Juga, kalkulator raster pada QGIS rusak, jadi saya tidak dapat menggunakan secara langsung.
George Silva

0

Dari dalam konsol python 2.7.14 Qgis 2.18.28, ini berfungsi untuk saya. Ini menghindari keharusan menggunakan prompt dengan jalur python absolut.

import subprocess
subprocess.check_call(['python', '-m', 'pip', 'install', 'openpyxl'])

Menurut pengembang pip, pip.main atau pip._internal.main tidak didukung. https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program Saya memodifikasi sys.executable yang disarankan menjadi 'python', karena dalam Qgis itu adalah qgis sendiri.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.