[Pywps-dev] Import qgis.core into PyWPS process

Eduardo Silverio da Silva eduardosilverio1990 at gmail.com
Thu Jan 5 05:40:42 PST 2017


Problem solved!

The problem is that each time that I change the PATHs, the Apache need to
be restarted to update the environment variables.
Also I realized that only the PYTHONPATH in Windows is not recognized in
the way that I have done before (Control Panel>Advanced system
settings>Environment Variables), so I needed to put the paths in a archive
that my Python could read "C:\Pytho27\paths.pth".
Now I can import qgis.core and even the plugin "processing" from qgis.

But here is another question: How to run the algorithm Extract Nodes on a
local Shapefile?

# In my IDLE Python, I do this by typing:
from qgis.core import QgsApplication
from processing.core.Processing import Processing
import processing
qgis = QgsApplication([], True)
qgis.setPrefixPath('C:/Program Files/QGIS 2.18/apps/qgis', True)
qgis.initQgis()
Processing.initialize()
processing.runalg('qgis:extractnodes', 'C:\river.shp', 'C:\result.shp')

# But when I try in PyWPS, the program stops in "Processing.initialize()",
then I need to kill the process.

Any suggestions?

Thanks

2017-01-02 19:54 GMT-02:00 Eduardo Silverio da Silva <
eduardosilverio1990 at gmail.com>:

> Hi,
>
> The way I configured the path was by accessing: Control Panel > System and
> Security > System > Advanced system settings > Environment Variables...
> (Image attached)
>
> I also have tested with the following code just at the begining of the
> code:
>
> import sys
> sys.path.append("C:\Program Files (x86)\QGIS 2.18\bin")
> sys.path.append("C:\Program Files (x86)\QGIS 2.18\apps\qgis\bin")
> sys.path.append("C:\Program Files (x86)\QGIS 2.18\apps\qgis\python")
> sys.path.append("C:\Program Files (x86)\QGIS 2.18\apps\Python27\Lib\site-
> packages")
> sys.path.append("C:\Program Files (x86)\QGIS 2.18\apps\qgis\python\plugins"
> )
>
> and I got the same error: "No module named qgis.core".
>
> Well, thanks by the help!
>
> Eduardo
>
> 2017-01-02 18:56 GMT-02:00 Jáchym Čepický <jachym.cepicky at gmail.com>:
>
>> Well,
>>
>> I have no idea, how you confiured the PYTHONPATH
>>
>> but try (already proposed)
>>
>> import sys
>> sys.path.append("/path/to/qgis/")
>>
>> J
>>
>> Dne 2.1.2017 v 21:54 Eduardo Silverio da Silva napsal(a):
>>
>>> I have checked the GetCapabilities by accessing:
>>> http://localhost:8080/cgi-bin/pywps.cgi?service=wps&request=
>>> GetCapabilities&version=1.0.0
>>> and it is okay. I can even execute the example process "inputs_added".
>>>
>>> Then a have checked the log messages and the result is:
>>>
>>> PyWPS [2017-01-02 18:49:34,355] INFO: Setting PYWPS_PROCESSES from
>>> configuration file to c:/pywps/pywps_processes
>>> PyWPS [2017-01-02 18:49:34,388] WARNING: Could not import processes from
>>> 'pywps_processes': ImportError('No module named qgis.core',)
>>> PyWPS [2017-01-02 18:49:34,424] INFO: Following processes are imported:
>>> ['inputs_added']
>>> Traceback (most recent call last):
>>>   File "C:/pywps\pywps\Wps\__init__.py", line 174, in
>>> _init_from_directory
>>>     [processSources.__name__])
>>>   File "c:/pywps/pywps_processes\processing.py", line 2, in <module>
>>>     from qgis.core import *
>>> ImportError: No module named qgis.core
>>>
>>> As we can see, the only process imported was the "input_added", while my
>>> other algorithm "processing" gave an ImportError.
>>>
>>> Eduardo,
>>>
>>> 2017-01-02 18:42 GMT-02:00 Jáchym Čepický <jachym.cepicky at gmail.com>:
>>>
>>> Hi,
>>>>
>>>> first check, if your GetCapabilities response is ok (
>>>> http://server/wps?service=wps&request=getcapabilities) - maybe the
>>>> plugin
>>>> is corrupted (it's not the stablest piece of software).
>>>>
>>>> Then please one more time: check the error.log of your web server, there
>>>> should be written more - you can pass any exception or error message
>>>> either
>>>> to the mailing list or share it via pastebin.net or similar service
>>>>
>>>> J
>>>>
>>>> Dne 2.1.2017 v 21:38 Eduardo Silverio da Silva napsal(a):
>>>>
>>>> In my case I am using QGIS 2.18 (x32) and Python 2.7.13 (x32) on Windows
>>>>> 10, and I have already added the following environment variables:
>>>>>
>>>>> PYTHONPATH:
>>>>> C:\Program Files (x86)\QGIS 2.18\apps\qgis\python
>>>>> C:\Program Files (x86)\QGIS 2.18\apps\qgis\python\plugins
>>>>> C:\Program Files (x86)\QGIS 2.18\apps\Python27\Lib\site-packages
>>>>>
>>>>> PATH:
>>>>> C:\Program Files (x86)\QGIS 2.18\bin
>>>>> C:\Program Files (x86)\QGIS 2.18\apps\qgis\bin
>>>>> C:\Python27
>>>>> C:\Python27\Scripts
>>>>>
>>>>> Here is the code where I want to import the classes:
>>>>>
>>>>> #I would like to use these classes:
>>>>> # from qgis.core import *
>>>>> # from qgis.gui import *
>>>>> # from processing.core.Processing import Processing
>>>>> # import processing
>>>>>
>>>>> from pywps.Process import WPSProcess
>>>>> from types import FloatType
>>>>>
>>>>> class Process(WPSProcess):
>>>>>      def __init__(self):
>>>>>          WPSProcess.__init__(self,
>>>>>               identifier       = "processar",
>>>>>               title            = "Title",
>>>>>               version          = "1",
>>>>>               storeSupported   = "false",
>>>>>               statusSupported  = "false",
>>>>>               abstract         = "Abstract")
>>>>>
>>>>>          self.value1 = self.addLiteralInput(identifier = "value1",
>>>>> title
>>>>> =
>>>>> "Input 1", type = FloatType)
>>>>>          self.value2 = self.addLiteralInput(identifier = "value2",
>>>>> title
>>>>> =
>>>>> "Input 2", type = FloatType)
>>>>>          self.result = self.addLiteralOutput(identifier = "result",
>>>>> title =
>>>>> "Result", type = FloatType)
>>>>>
>>>>>      def execute(self):
>>>>>     # Here I would like to write the necessary code to execute the
>>>>> qgis:extractnodes algorithm:
>>>>>     # processing.runalg('qgis:extractnodes', 'river.shp',
>>>>> 'output.shp')
>>>>>
>>>>> v1 = self.value1.getValue()
>>>>>          v2 = self.value2.getValue()
>>>>>          self.result.setValue(v1 + v2)
>>>>>          return
>>>>> --------------------------------------
>>>>>
>>>>> But even with those PATH variables configured I could not access the
>>>>> algorithm via WPS-client plugin.
>>>>>
>>>>> Regards,
>>>>>
>>>>>
>>>>> 2017-01-02 17:31 GMT-02:00 Salvatore Larosa <lrssvtml at gmail.com>:
>>>>>
>>>>> Hi,
>>>>>
>>>>>>
>>>>>> On Mon, Jan 2, 2017 at 4:31 PM, Eduardo Silverio da Silva <
>>>>>> eduardosilverio1990 at gmail.com> wrote:
>>>>>>
>>>>>> Hello people,
>>>>>>
>>>>>>>
>>>>>>> I have a python script that uses some classes from qgis and it runs
>>>>>>> correctly in my standalone app (IDLE Python). But when I try to
>>>>>>> publish
>>>>>>> the
>>>>>>> script through PyWPS (3.2.5), the process does not apear in the list
>>>>>>> of
>>>>>>> GetCapabilities. I think the problem is with the following imports:
>>>>>>>
>>>>>>> from qgis.core import *
>>>>>>> from qgis.gui import *
>>>>>>> from processing.core.Processing import Processing
>>>>>>>
>>>>>>> When I comment these lines the algorithm is showed.
>>>>>>>
>>>>>>>
>>>>>>> I guess the problem is with your environment variable, you should
>>>>>> add the
>>>>>> QGIS python and plugins paths to PYTHONPATH and probably the QGIS lib
>>>>>> path
>>>>>> to LD_LIBRARY.
>>>>>>
>>>>>> Also, any error message could be useful in order to get some help from
>>>>>> the
>>>>>> community. :)
>>>>>>
>>>>>> Regards,
>>>>>> -SL
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Salvatore Larosa
>>>>>> linkedIn: http://linkedin.com/in/larosasalvatore
>>>>>> twitter: @lrssvt
>>>>>> skype: s.larosa
>>>>>> IRC: lrssvt on freenode
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> pywps-dev mailing list
>>>>> pywps-dev at lists.osgeo.org
>>>>> http://lists.osgeo.org/mailman/listinfo/pywps-dev
>>>>>
>>>>>
>>>>> --
>>>> Jachym Cepicky
>>>> e-mail: jachym.cepicky at gmail.com
>>>> twitter: @jachymc
>>>>
>>>>
>>>
>>>
>>>
>> --
>> Jachym Cepicky
>> e-mail: jachym.cepicky at gmail.com
>> twitter: @jachymc
>>
>
>
>
> --
> Eduardo Silverio da Silva
> Mestrando em Ciências Geodésicas na Universidade Federal do Paraná
> Engenheiro Cartógrafo e Agrimensor
> +55 41 99873-6274 <+55%2041%2099873-6274>
>



-- 
Eduardo Silverio da Silva
Mestrando em Ciências Geodésicas na Universidade Federal do Paraná
Engenheiro Cartógrafo e Agrimensor
+55 41 99873-6274
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/pywps-dev/attachments/20170105/b4efdf02/attachment.html>


More information about the pywps-dev mailing list