Python no QGIS

494 views
Skip to first unread message

Franklin Januário

unread,
Nov 29, 2016, 5:30:22 AM11/29/16
to qgisbrasil
Bom dia,

Pessoal, seria possível fazer a instalação independente do python 2.x e setar o QGIS para utilizá-la? Ou seja há como não fazer a instalação do python padrão do QGIS e apontar ele para o HOME do python instalado previamente?

Att.

yjmenezes

unread,
Nov 29, 2016, 6:07:04 AM11/29/16
to qgisbrasil
@Franklin,

Bom dia

Nao sei em kernel Windows. Em Sistema Operacional GNU/linux existe uma variavel do ambiente que aponta para o interpretador Python.

export | grep PYTHON
resulta:
declare -x PYTHONPATH=":/usr/local/lib/python2.7/site-packages"

tenho o Python 2.7 e o Python3.4 instalados e um link simbolico no /usr/bin
$ ls -l /usr/bin/python
resulta:
lrwxrwxrwx 1 root root 9 Mar 16  2015 /usr/bin/python -> python2.7

posso usar o python3.4
/usr/bin/python3.4
resulta:
Python 3.4.2 (default, Oct  8 2014, 10:45:20)
[GCC 4.9.1] on linux


[]s
julio
cartognu.org

Franklin Januário

unread,
Nov 29, 2016, 6:44:37 AM11/29/16
to qgisbrasil
Bom dia,

Pois é @Julio, as coisas são bem mais simples no GNU/Linux, eu até configurei a variável ambiente para uma versão 3.2 do python, mas meu problema é ainda mais complexo. Eu preciso instalar a biblioteca shapely, tentei a que é distribuída para windows com extensão whl, seria simples com o comando pip. Então rodei o get-pip.py que faz a instalação do pip no windows.

https://pip.pypa.io/en/stable/installing/

Porém a resposta foi:

PS C:\> pip install shapely.whl
shapely.whl is not a valid wheel filename.
PS C:\> pip install shapely32.whl
shapely32.whl is not a valid wheel filename.


Por fim tentei novamente com o "pip install geos" para posteriormente fazer o "pip install shapely".

Me foi solicitado instalar o "VS C++ para python compiler" (já tava ficando p. dá vida a essas horas).

error: Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat).

Nesse ponto desisti, vou solicitar a instalação de uma máquina virtual linux e torcer para ser aprovado pela TI (risos).

Att.


Franklin Januário

unread,
Nov 29, 2016, 6:53:46 AM11/29/16
to qgisbrasil
@Júlio

Voltando a questão do python, está sendo executada a versão 3.4.4 64bits:

Python 3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 20:20:57) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

Associada (creio eu) às variáveis ambiente:

Path                           C:\Python34\..
PATHEXT                        .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.CPL

No MSYS ao chamar python tenho o seguinte:

Python 2.7.5 (default, May 15 2013, 22:44:16) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

Que é o do QGIS, tentei rodar o "pip install geos" porém também sem sucesso:

    ** make sure the development packages of libxml2 and libxslt are installed **

   
Using build configuration of libxslt
    running install
    running build
    running build_py
    creating build
    creating build
\lib.win-amd64-2.7
    creating build
\lib.win-amd64-2.7\lxml
    copying src
\lxml\builder.py -> build\lib.win-amd64-2.7\lxml
    copying src
\lxml\cssselect.py -> build\lib.win-amd64-2.7\lxml
    copying src
\lxml\doctestcompare.py -> build\lib.win-amd64-2.7\lxml
    copying src
\lxml\ElementInclude.py -> build\lib.win-amd64-2.7\lxml
    copying src
\lxml\pyclasslookup.py -> build\lib.win-amd64-2.7\lxml
    copying src
\lxml\sax.py -> build\lib.win-amd64-2.7\lxml
    copying src
\lxml\usedoctest.py -> build\lib.win-amd64-2.7\lxml
    copying src
\lxml\_elementpath.py -> build\lib.win-amd64-2.7\lxml
    copying src
\lxml\__init__.py -> build\lib.win-amd64-2.7\lxml
    creating build
\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\__init__.py -> build\lib.win-amd64-2.7\lxml\includes
    creating build
\lib.win-amd64-2.7\lxml\html
    copying src
\lxml\html\builder.py -> build\lib.win-amd64-2.7\lxml\html
    copying src
\lxml\html\clean.py -> build\lib.win-amd64-2.7\lxml\html
    copying src
\lxml\html\defs.py -> build\lib.win-amd64-2.7\lxml\html
    copying src
\lxml\html\diff.py -> build\lib.win-amd64-2.7\lxml\html
    copying src
\lxml\html\ElementSoup.py -> build\lib.win-amd64-2.7\lxml\html
    copying src
\lxml\html\formfill.py -> build\lib.win-amd64-2.7\lxml\html
    copying src
\lxml\html\html5parser.py -> build\lib.win-amd64-2.7\lxml\html
    copying src
\lxml\html\soupparser.py -> build\lib.win-amd64-2.7\lxml\html
    copying src
\lxml\html\usedoctest.py -> build\lib.win-amd64-2.7\lxml\html
    copying src
\lxml\html\_diffcommand.py -> build\lib.win-amd64-2.7\lxml\html
    copying src
\lxml\html\_html5builder.py -> build\lib.win-amd64-2.7\lxml\html
    copying src
\lxml\html\_setmixin.py -> build\lib.win-amd64-2.7\lxml\html
    copying src
\lxml\html\__init__.py -> build\lib.win-amd64-2.7\lxml\html
    creating build
\lib.win-amd64-2.7\lxml\isoschematron
    copying src
\lxml\isoschematron\__init__.py -> build\lib.win-amd64-2.7\lxml\isoschematron
    copying src
\lxml\lxml.etree.h -> build\lib.win-amd64-2.7\lxml
    copying src
\lxml\lxml.etree_api.h -> build\lib.win-amd64-2.7\lxml
    copying src
\lxml\includes\c14n.pxd -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\config.pxd -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\dtdvalid.pxd -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\etreepublic.pxd -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\htmlparser.pxd -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\relaxng.pxd -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\schematron.pxd -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\tree.pxd -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\uri.pxd -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\xinclude.pxd -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\xmlerror.pxd -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\xmlparser.pxd -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\xmlschema.pxd -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\xpath.pxd -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\xslt.pxd -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\etree_defs.h -> build\lib.win-amd64-2.7\lxml\includes
    copying src
\lxml\includes\lxml-version.h -> build\lib.win-amd64-2.7\lxml\includes
    creating build
\lib.win-amd64-2.7\lxml\isoschematron\resources
    creating build
\lib.win-amd64-2.7\lxml\isoschematron\resources\rng
    copying src
\lxml\isoschematron\resources\rng\iso-schematron.rng -> build\lib.win-amd64-2.7\lxml\isoschematron\resources\rng
    creating build
\lib.win-amd64-2.7\lxml\isoschematron\resources\xsl
    copying src
\lxml\isoschematron\resources\xsl\RNG2Schtrn.xsl -> build\lib.win-amd64-2.7\lxml\isoschematron\resources\xsl
    copying src
\lxml\isoschematron\resources\xsl\XSD2Schtrn.xsl -> build\lib.win-amd64-2.7\lxml\isoschematron\resources\xsl
    creating build
\lib.win-amd64-2.7\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src
\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_abstract_expand.xsl -> build\lib.win-amd64-2.7\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src
\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_dsdl_include.xsl -> build\lib.win-amd64-2.7\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src
\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_schematron_message.xsl -> build\lib.win-amd64-2.7\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src
\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_schematron_skeleton_for_xslt1.xsl -> build\lib.win-amd64-2.7\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src
\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_svrl_for_xslt1.xsl -> build\lib.win-amd64-2.7\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src
\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\readme.txt -> build\lib.win-amd64-2.7\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    running build_ext
    building
'lxml.etree' extension
    creating build
\temp.win-amd64-2.7
    creating build
\temp.win-amd64-2.7\Release
    creating build
\temp.win-amd64-2.7\Release\src
    creating build
\temp.win-amd64-2.7\Release\src\lxml
    C
:\Users\franklin.silva\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -Isrc\lxml\includes -IC:\OSGEO4~1\apps\Python27\include -IC:\OSGEO4~1\apps\Python27\PC /Tcsrc\lxml\lxml.etree.c /Fobuild\temp.win-amd64-2.7\Release\src\lxml\lxml.etree.obj -w
    cl
: Command line warning D9025 : overriding '/W3' with '/w'
    lxml
.etree.c
    src
\lxml\lxml.etree.c(83) : fatal error C1083: Cannot open include file: 'Python.h': No such file or directory
   
Compile failed: command '"C:\Users\franklin.silva\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\cl.exe"' failed with exit status 2
    C
:\Users\franklin.silva\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -I/usr/include/libxml2 /Tcc:\users\frankl~1.sil\appdata\local\temp\xmlXPathInith1otb9.c /Fousers\frankl~1.sil\appdata\local\temp\xmlXPathInith1otb9.obj
    xmlXPathInith1otb9
.c
    c
:\users\frankl~1.sil\appdata\local\temp\xmlXPathInith1otb9.c(1) : fatal error C1083: Cannot open include file: 'libxml/xpath.h': No such file or directory
   
*********************************************************************************
   
Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?
   
*********************************************************************************
    error
: command '"C:\Users\franklin.silva\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\cl.exe"' failed with exit status 2

Pelo que entendi faltava o libxml2 então tentei instalar o mesmo também sem sucesso:

$ pip install libxml2
Collecting libxml2
C
:\OSGEO4~1\apps\Python27\lib\site-packages\pip\_vendor\requests\packages\urllib3\util\ssl_.py:318: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#snimissingwarning.
 
SNIMissingWarning
C
:\OSGEO4~1\apps\Python27\lib\site-packages\pip\_vendor\requests\packages\urllib3\util\ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#insecureplatformwarning.
 
InsecurePlatformWarning
 
Could not find a version that satisfies the requirement libxml2 (from versions: )
No matching distribution found for libxml2

yjmenezes

unread,
Nov 29, 2016, 7:08:11 AM11/29/16
to qgisbrasil
@Franklin,

Vou analisar aqui, em todo caso, rapidinho:
tente atualizar o pip  e use a diretiva  --use-wheel

pip install --upgrade pip
pip install --use-wheel --no-index --find-links=/diretorio/do/download  nomedopacote

[]s
julio

yjmenezes

unread,
Nov 29, 2016, 7:24:56 AM11/29/16
to qgisbrasil
@Franklin

Mais uma dica:
Pode tentar tambem instalar o que esta faltando via OsGeo4W.exe

Alias, constatei que o OsGeoShell eh uma janela DOS, prompt C:\>  e  responde a comandos DIR, ja o MSYS usa o bash e no prompt aparece o $

[]s
julio


Captura de tela de 2016-11-27 19:00:43.png

yjmenezes

unread,
Nov 29, 2016, 9:40:36 AM11/29/16
to qgisbrasil
@Franklin,

gerei aqui as dependencias do QGIS, as duas versoes que tenho rodando aqui. 2.10 e 2.18
De uma comparada, qq coisa instalo a 2.14 ou algum usuario Debian/Ubuntu pode ver para voce.
basta digitar num terminal:

dpkg -s qgis | grep ^Depends | tr \, \\n > /tmp/qgis_depends.txt; cat /tmp/qgis_depends.txt

[]s
julio
qgis_depend.zip

Franklin Januário

unread,
Nov 29, 2016, 10:30:59 AM11/29/16
to qgisbrasil
@Júlio,

Sobre atualização do pip utilizanto o MSYS é dito estar atualizado:

$ pip install --upgrade pip
C
:\OSGEO4~1\apps\Python27\lib\site-packages\pip\_vendor\requests\packages\urllib3\util\ssl_.py:318: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#snimissingwarning.

 
SNIMissingWarning
C
:\OSGEO4~1\apps\Python27\lib\site-packages\pip\_vendor\requests\packages\urllib3\util\ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#insecureplatformwarning.
 
InsecurePlatformWarning
Requirement already up-to-date: pip in c:\osgeo4~1\apps\python27\lib\site-packages

Tentando instalar o pacote pelo arquivo whl ainda no MSYS deu certo:

$ pip install --use-wheel --no-index c:/Shapely-1.5.17-cp27-cp27m-win_amd64.whl
Processing c:\shapely-1.5.17-cp27-cp27m-win_amd64.whl
Installing collected packages: Shapely
Successfully installed Shapely-1.5.17



Testei e o Shapely está instalado:

franklin.silva@UCPA-AGR-TOPO ~
$ python
Python 2.7.5 (default, May 15 2013, 22:44:16) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from shapely.geometry import Point
>>> patch = Point (0.0, 0.0).buffer(10.0)
>>> patch
<shapely.geometry.polygon.Polygon object at 0x0000000003497DA0>
>>> pach.area
Traceback (most recent call last):
 
File "<stdin>", line 1, in <module>
NameError: name 'pach' is not defined
>>> patch.area
313.6548490545939
>>>


Muito grato.

yjmenezes

unread,
Nov 29, 2016, 3:21:54 PM11/29/16
to qgisbrasil
@Franklin,

Parece-me que o OsGeo4W cria uma estrutura de diretorios C:\OSGEO4~1 e dois SHELL, um do (eka)command.com e outro do MSYS com o bash.
As aplicacoes, como o Python, fican dentro desta estrutura
Muita atualizacao e dependecias podem ser solucionadas via OsGEO4W-setup.exe em modo avancado.

temos 2 janelas DOS e a janela MSYS. Ver na barra superior de cada janela.
O Python fica acessivel via OsGeoWshell  e via MSYS mas nao fica acessivel via janela DOS do command.com

Nao sei se isso eh assim em todas as versoes do Windows, falta uma certa coerencia as vezes, testei em XP.

app: A maquina virtual, pode ser interessante, eu uso o QEMU e a maquina virtual fala com toda a Intranet e com a Internet, sem problemas. ( host=Linux ).


[]s
julio
cartognu.org
Captura de tela de 2016-11-29 18:13:53.png

Franklin Januário

unread,
Nov 30, 2016, 4:17:43 AM11/30/16
to qgisbrasil
Bom dia @Júlio,

Exatamente, fica tudo dentro do  C:\OSGEO4~1 como você observou, o problema é que o modo avançado não permite instalação de bibliotecas extras, com no caso o Shapely que eu precisava, então realmente tive que usar o pip.

O que eu queria saber mesmo é se eu consigo apontar o QGIS para uma outra instalação do python evitando assim de ter duas instalações python em locais diferentes dentro e fora da C:\OSGEO4~1. Mas creio que para que isso se torne viável teria que mexer nos arquivos de lote que configuram o QGIS durante a instalação no Windows.

O instalador poderia nos perguntar se desejamos utilizar uma instalação do python existente.

Att.

yjmenezes

unread,
Nov 30, 2016, 1:47:42 PM11/30/16
to qgisbrasil
@Franklin,

Sera que nao daria para usar estas opcoes ?
a) configurar variavel do ambiente: PYTHONPATH=
b) usar link simbolico
c) incluir o C:\OSGEO~1 no PATH do Windows

teria de ver o que eh necessario configurar e onde configurar.

O OSGEO deve nivelar por baixo e por isso usa o python2.7.
O instalador avancado deve obedecer a estrutuda de diretorios do ambiente OSgeo4w e jogar tudo dentro do C:\OSGeo4W\.

[]s
julio
cartognu.org

Franklin Januário

unread,
Dec 6, 2016, 11:42:50 AM12/6/16
to qgisbrasil
Boa tarde,

Desculpe a demora Júlio, infelizmente não tenho acesso administrador na máquina, devido a restrições da TI.

Não poderei testar.

Att.

yjmenezes

unread,
Dec 6, 2016, 12:44:13 PM12/6/16
to qgisbrasil
@Franklin

Ok, thx, em todo caso fica a ideia, quem sabe alguem da lista testa.

[]s
julio
cartognu.org
Reply all
Reply to author
Forward
0 new messages