Làm cách nào để cài đặt thư viện python của bên thứ 3 cho QGIS trên Windows?


18

Làm cách nào tôi có thể sử dụng thư viện của bên thứ 3 trên các plugin QGIS trên Windows? Tôi đã phát triển một plugin sử dụng rasterio và numpy cho một khách hàng, nhưng anh ta gặp vấn đề khi cài đặt rasterio và numpy.

Trên thực tế, rasterio và numpy đã được cài đặt trong hệ thống chính Python (C: \ Python27), nhưng tôi cần PythonIS để nhận ra nó.

Nó được hoàn thiện bằng cách nào?

Câu trả lời:


23

QGIS, được phân phối bởi OSGeo4W, thường đi kèm với cài đặt Python riêng và các gói riêng độc lập với cài đặt Python "thông thường" của bạn.

Cách dễ nhất để cài đặt gói Python vào bản phân phối OSGeo4W là mở Shell OSGeo4W và sử dụng pip từ đó. Điều này sẽ cài đặt gói vào phân phối Python mà QGIS sử dụng, trong trường hợp của tôi nằm ở C:\OSGeo4W64\apps\Python27\và các mô-đun tương ứng tại C:\OSGeo4W64\apps\Python27\Lib\site-packages. Bạn cũng có thể thực hiện thường xuyên pip listbên trong OSGeo4W ShellWindows Shell thông thường (cmd.exe) của bạn và so sánh các kết quả đầu ra để xem bạn có thể thiếu gói nào.

Nếu bạn không muốn cài đặt các gói thành hai cài đặt Python, bạn cũng có thể thử thay đổi PythonPath để bao gồm các gói từ cài đặt này sang cài đặt khác.

chỉnh sửa: Câu trả lời này được hướng vào câu hỏi ban đầu liên quan đến pip để cài đặt các mô-đun sẽ được sử dụng với QGIS trong Windows. OP đã chỉnh sửa / tinh chỉnh câu hỏi nên câu trả lời này hơi rộng.


3
Để sử dụng pip trong shell OSGeoW tôi phải làmpython -m pip install wheel setuptools c:\path\to\rasterio-<ver>-win_amd64.whl
chip

13

Numpy được cài đặt theo mặc định trong QGIS (Phiên bản độc lập, phiên bản OSGeo4W). Đối với rasterio , có nhiều vấn đề. Tôi biết rằng rasterio rất mạnh mẽ và dễ sử dụng (tôi sử dụng nó) nhưng tại sao rasterio trong một plugin QGIS trong khi bạn có tất cả các chức năng của PyQGIS? (nó được thiết kế cho trình bao Python hoặc cho các tập lệnh, không được sử dụng với QGIS / PyQGIS, như Fiona cho các shapefiles)

Trong Linux hoặc Mac OS X (hệ thống Unix), QGIS sử dụng cài đặt Python tiêu chuẩn (độc lập với QGIS) và nếu dễ cài đặt hoặc nâng cấp mô-đun Python (cũng có nhiều trình biên dịch được cài đặt theo mặc định)

Trong Windows, Python không được cài đặt theo mặc định và QGIS cài đặt phiên bản của riêng mình. Để cài đặt các mô-đun Python thuần túy (không có thư viện C, C ++), bạn có các giải pháp ( Mô-đun độc lập QGIS và Mô-đun Python , Cài đặt công cụ thiết lập Python vào OSGeo4W Python hoặc Cài đặt PySAL cho OSGeo4W )

Nhưng đối với các mô-đun cần được biên dịch (không có trình biên dịch theo mặc định), điều đó không dễ dàng. Bạn có thể thử sao chép / dán mô-đun đã cài đặt của mình vào trang web QGIS Python_folder nhưng có vấn đề.

Rasterio cần được biên dịch dựa trên thư viện GDAL đã cài đặt và nếu bạn cài đặt nó từ Christoph Gohlke Windows Binaries không chính thức cho các gói mở rộng Python , chẳng hạn, tôi không chắc rằng phiên bản GDAL được sử dụng bởi QGIS là như nhau (đối với các tham chiếu đến thư viện dll)

Nếu bạn sử dụng độc quyền numpy và rasterio, tại sao không phải là một kịch bản độc lập?


Liên kết 1 không hoạt động
biệt danh

đã sửa, cảm ơn và tôi đã sửa đổi văn bản cho vấn đề rasterio cụ thể
gen

Người dùng cần sử dụng cái này từ QGIS. Ngoài ra, máy tính raster trên QGIS đã bị hỏng, vì vậy tôi không thể sử dụng trực tiếp.
George Silva

0

Từ trong bảng điều khiển python 2.7,14 của Qgis 2.18.28, cái này hoạt động với tôi. Nó tránh phải sử dụng lời nhắc với đường dẫn python tuyệt đối.

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

Theo các nhà phát triển pip, pip.main hoặc pip._iternal.main không được hỗ trợ. https://pip.pypa.io/en/urdy/user_guide/#USE-pip-from-your-program Tôi đã sửa đổi sys.executable thành 'python', vì trong Qgis, chính nó là qgis.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.