Como instalar bibliotecas python de terceiros para QGIS no Windows?

18

Como posso usar bibliotecas de terceiros em plug-ins QGIS no Windows? Eu desenvolvi um plugin que usa rasterio e numpy para um cliente, mas ele está tendo problemas para instalar o rasterio e o numpy.

Na verdade, rasterio e numpy foram instalados no sistema principal Python (C: \ Python27), mas eu preciso do QGIS Python para reconhecê-lo.

Como pode ser feito?

George Silva
fonte

Respostas:

23

O QGIS, conforme distribuído pelo OSGeo4W, geralmente vem com sua própria instalação do Python e seus próprios pacotes que são independentes da sua instalação "regular" do Python.

A maneira mais fácil de instalar um pacote Python na distribuição OSGeo4W é abrir o OSGeo4W Shell e usar o pip a partir daí. Isso instalará o pacote na distribuição Python que o QGIS usa, no meu caso, localizado em C:\OSGeo4W64\apps\Python27\e nos módulos de acordo C:\OSGeo4W64\apps\Python27\Lib\site-packages. Você também pode fazer uma regularidade pip listno OSGeo4W Shell e no Windows Shell normal (cmd.exe) e comparar as saídas para ver quais pacotes podem estar faltando.

Se você não deseja instalar pacotes em duas instalações do Python, também pode tentar alterar o PythonPath para incluir pacotes de uma instalação para outra.

editar: Esta resposta é direcionada à pergunta original sobre o pip para instalar os módulos a serem usados ​​com o QGIS no Windows. Desde então, o OP editou / refinou a pergunta, então essa resposta é um pouco ampla agora.

Kersten
fonte
3
Para usar pip em OSGeoW shell que tinha que fazerpython -m pip install wheel setuptools c:\path\to\rasterio-<ver>-win_amd64.whl
chip de
13

O Numpy é instalado por padrão no QGIS (versão autônoma, versão OSGeo4W). Para o rasterio , há muitos problemas. Eu sei que o rasterio é poderoso e fácil de usar (eu o uso), mas por que o rasterio em um plug-in QGIS enquanto você tem todas as funções do PyQGIS? (foi projetado para o shell Python ou para scripts, não para ser usado com QGIS / PyQGIS, como Fiona para os shapefiles)

No Linux ou Mac OS X (sistemas Unix), o QGIS usa a instalação padrão do Python (independente do QGIS) e se é fácil instalar ou atualizar um módulo Python (também existem muitos compiladores instalados por padrão)

No Windows, o Python não é instalado por padrão e o QGIS instala sua própria versão. Para instalar módulos Python puros (sem bibliotecas C, C ++), você tem soluções ( QGIS Standalone e os módulos Python , Instalando as ferramentas de instalação do Python no OSGeo4W Python ou Instalando o PySAL para OSGeo4W )

Mas para os módulos que precisam ser compilados (sem compilador por padrão), não é fácil. Você pode tentar copiar / colar seu módulo instalado no site_folder do QGIS Python, mas há problemas.

O Rasterio precisa ser compilado em uma biblioteca GDAL instalada e, se você o instalar nos binários não oficiais do Windows Christoph Gohlke para pacotes de extensão Python , por exemplo, não tenho certeza de que a versão do GDAL usada pelo QGIS seja a mesma (para as referências ao bibliotecas dll)

Se você usa exclusivamente numpy e rasterio, por que não um script independente?

gene
fonte
O 1º link não funciona
nickves
corrigido, obrigado e eu modifiquei o texto para o problema específico de rasterio
gene
O usuário precisava usar isso no QGIS. Além disso, a calculadora de varredura no QGIS estava quebrada, então não pude usá-la diretamente.
George Silva
0

No console python 2.7.14 do Qgis 2.18.28, isso funciona para mim. Evita ter que usar prompts com caminhos python absolutos.

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

De acordo com os desenvolvedores de pip, pip.main ou pip._internal.main não são suportados. https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program Modifiquei o sys.executable recomendado para 'python', porque no Qgis é o próprio qgis.

Pietro Tou
fonte