NOTE!! This pages is outdated and based on old implementations of PyWPS. The written documentation also often causes problems during installation. Please check the page Set up PyWPS in a windows environment with Anaconda.

The PyWPS software was originally developed to use under Linux (Debian). However, it is also possible to use the software in a Windows environment for example for testing purposes. To do so, Apache server has to be installed on the system. For Linux installation see this manual. Note this pages was initially written for PythonXY users. If you use anaconda bear in mind that location is no longer c:\python2.7 but c:\anaconda. Also mind the version of anaconda installed (x86 or x64 bit version).

Step 0 Python installations

Make sure Python is pre-installed on your machine, we recommend PythonXY (version 2.7, not 3.x).

After install, start a NEW command line prompt and go to the root and check if :

Step 1 PyWPS

Download PyWPS (version 3.2.1, not 3.2.2)

Step 2 Install PyWPS

Unpack the contents of PyWPS folder and save the entire folder as c:\pywps. Such that you have c:\pywps\wps.py. Check if it works command line in python by navigating to c:\pywps and execute this command:

C:\>cd pywps

C:\pywps>python wps.py
PyWPS NoApplicableCode: Locator: None; Value: No query string found. Content-Type: application/xml

<?xml version="1.0" encoding="utf-8"?>
<ExceptionReport version="1.0.0" xmlns="http://www.opengis.net/ows/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net ows/1.1 http://schemas.opengis.net/ows/1.1.0/owsExceptionReport.xsd">
        <Exception exceptionCode="NoApplicableCode">
                <ExceptionText>'No query string found.'</ExceptionText>
        </Exception>
</ExceptionReport>

Step 3 Configure PyWPS

  1. Create a folder called c:\pywps\pywps_processes
  2. Add the file default.cfg (from c:\pywps\pywps) into it. If you like you can insert your own information in the file. 
    However, do not forget to :
    1. Set the correct path for tempPath(c:/pywps/temp) under [server] section.
    2. Set outputPath (c:/[webserver]/htdocs/wps/wpsoutput) under [server] section.
    3. Set processesPath to c:/pywps/pywps_processes
    4. Set the logFile to somewhere (c:/pywps/log)

The path slashes should conform to python conventions, which happen to be the same as the linux slash convention, and not the windows convention. Note that python paths should never end with a slash!.

Step 4 Configure Apache

Navigate to the Apache folder.

If the Apache web server is not installed in your machine yet, download the newest stable release of Apache (https://httpd.apache.org/download.cgi).

After installation, in the Apache folder c:\Program Files (x86)\Apache Software Foundation\Apache2.2 you find a sub folder called cgi-bin.

Create an empty file called pywps.cgi in this folder and insert the following code in it, after checking the python path (and correcting it: for example if you have Python2.7 installed, the first line should be #!c:\python27\python.exe): Note for anaconda users this should be #!c:/anaconda/python.exe and the MPLCONFIGDIR should be C:/Anaconda/Lib/site-packages/matplotlib/mpl-data

#!C:\python27\python.exe
import sys
sys.path.insert(0, r"C:/pywps")
import os
os.environ['PYWPS_CFG']='C:/pywps/pywps_processes/default.cfg'
os.environ['MPLCONFIGDIR']='C:/Python27/Lib/site-packages/matplotlib/mpl-data'
# Note that WPS runs as apache user and not as you, so many more user variables might be needed.
# Restart Apache after adding one.
import wps

Step 5 Install Python PyWPS package

Install the PyWPS Python package:

Check if it is installed correctly into python like this :

C:\>pip show pywps
---
Name: pywps
Version: 3.2.1
PyPi Version: trunk
Location: c:\python27\lib\site-packages\pywps-3.2.1-py2.7.egg
home_page: http://pywps.wald.intevation.org
Summary: PyWPS: Implementation of OGC's Web Processing Service in Python
Requires:
Required by(0):

Step 6 Install python-magic

Check if cygmagic.dll or cygmagic-1.dll is on your system. If not, install it via installing cygwin (http://cygwin.com/install.html). Install the appropriate version (i.e. 32bit or 64bit). You only need to install the python-magic part of cygwin. If you install all, it is very large (several Gb). You can force installation of python-magic by typing this in the search bar, see window below. NOTE if python-magic does not yield results. Try python2-magic (i.e. Python version for this version of PyWPS).

Set the path to the bin directory of cygwin and copy cygmagic-1.dll to cygmagic.dll.

NB. If you already have MinGW installed (x86 or x64), you can first try to install python-magic without having to install cygwin.

Step 7 First test of WPS

Test your WPS by starting Apache server and navigate to http://localhost/cgi-bin/pywps.cgi  The result should be something similar to this, meaning that the pywps process runs correctly inside the apache web server.

<ExceptionReport xmlns="http://www.opengis.net/ows/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0.0" xsi:schemaLocation="http://www.opengis.net/ows/1.1 http://schemas.opengis.net/ows/1.1.0/owsExceptionReport.xsd">
	<Exception exceptionCode="NoApplicableCode">
		<ExceptionText>'No query string found.'</ExceptionText>
	</Exception>
</ExceptionReport>

Step 8 Testing WPS behavior

Now pywps runs, test for correct WPS behavior in browser using the syntax in WPS Primer. In c:\pywps\tests\processes some example processes are included, copy its entire contents to the c:\pywps\pywps_processes folder (that you configured as processesPath=c:/pywps/pywps_processes in c:\pywps\pywps_processes\default.cfg) and find out whether you can get them to run. First test the GetCapabilities request:

<wps:Capabilities service="WPS" version="1.0.0" xml:lang="en-CA" xsi:schemaLocation="http:/opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsGetCapabilities_response.xsd" updateSequence="1">
...
</wps:Capabilities>

and then executing any of the available processes
e.g. http://localhost/cgi-bin/pywps.cgi?service=wps&request=Execute&Identifier=dummyprocess&DataInputs=\[input1=42\]&version=1.0.0.

Step 9 Add wps processes

Now add your own Python processes as WPS by copying your processes to the c:\pywps\pywps_processes folder too. Use the WPS syntax (Setting up a WPS process using PyWPS) for your python functions as in the copied examples. Change 3 things when adding a new WPS process based on these examples:

  1. add new file XYZ.py to c:/pywps/pywps_processes
  2. change identifier inside XYZ.py
  3. add "XYZ.py" to c:/pywps/pywps_processes/_init_.py

Known installation issues

Notes:

Acknowlegdements The first version of this documentation was made by MSc student Joost Boerboom for his thesis, financed by Deltares under the Next Generation Hydro Software program executed for Rijkswaterstaat. Subsequently, this documentation was improved by Deltares in projects EMODnet chemistry, ECOSTRESS and FAST.