Page 1 of 1

Using Python with XAMPP

PostPosted: 26. February 2013 11:50
by riclags
I've gone through this (http://community.apachefriends.org/f/viewtopic.php?f=16&t=34468) tutorial/how-to but I was wondering if there are any current ways to use Python with XAMPP as the mentioned post is 3 years old.

Also, if that's still the way to get Python working with XAMPP, I have 2 questions:
(1) Which directory are the .reg files placed? Is it under XAMPP or the Python directory?
(2) The shebang portion of the Python code also uses #!/usr/bin/python; is this correct?

Thanks.

Re: Using Python with XAMPP

PostPosted: 26. February 2013 12:11
by Nobbie
riclags wrote:I've gone through this (http://community.apachefriends.org/f/viewtopic.php?f=16&t=34468) tutorial/how-to but I was wondering if there are any current ways to use Python with XAMPP as the mentioned post is 3 years old.


It may be still working, but I would not do so anyway. I dont like the "Registry Hack" and recommend to go the "standard CGI" installation.

riclags wrote:(1) Which directory are the .reg files placed? Is it under XAMPP or the Python directory?


Anyhwere is ok, because this file is NOT used at runtime, you have to "double click" after creation what imports the contents into to your Windows Registry. Anyway, i do not recommend this Registry Hack.

riclags wrote:(2) The shebang portion of the Python code also uses #!/usr/bin/python; is this correct?


Of course NOT, that is the UNIX Pathname of Python. You have to replace that by the real pathname of your Python installation (i.e. #!c:/python/bin/python.exe or similar). If that pathname contains spaces (not recommended) you have to put double quotes around the pathname (#!"c:/program files/python/bin/python.exe"), but it looks ugly anyway.

There is no need for the Registry Hack if you use the Shebang Line instead. If you give *.cgi as extension to your python scripts, it should run "out of the box". If you would like to use a different extension (for example *.py) you only have to edit one line in httdp,conf. Look for "AddHandler cgi-script .cgi ...." (there may be already more than one extension) and simply add .py to this AddHandler (leave one space between the extensions).

Then restart Apache, use the right Shebang Line and thats it - forget everyhing about Registry. If you want CGI scripts being executed in your DocumentRoot (or subsequent folders), apply Option "ExecCGI" in the <Directory ...> Configuration (what is already the case for Xampp installations).

Re: Using Python with XAMPP

PostPosted: 26. February 2013 23:55
by JonB
Nobbie is 100% correct

Good luck

Re: Using Python with XAMPP

PostPosted: 27. February 2013 03:39
by riclags
Nobbie wrote:It may be still working, but I would not do so anyway. I dont like the "Registry Hack" and recommend to go the "standard CGI" installation.


Thanks for clearing things up. I do want to know how to do the "standard CGI" installation.

Re: Using Python with XAMPP

PostPosted: 27. February 2013 14:08
by Nobbie
riclags wrote:I do want to know how to do the "standard CGI" installation.


In that case, you should not ask and waste our time:

riclags wrote:but I was wondering if there are any current ways to use Python with XAMPP


Wasn't that your question? Call it whatever you want (i call it "standard"); but this is the current and best way how to use Python with Xampp.

Re: Using Python with XAMPP

PostPosted: 27. February 2013 15:06
by hackattack142
Hello,

Per the Python documentation, which you should take a look at to see the various options, (http://docs.python.org/2/howto/webservers.html) CGI is no longer recommended.

It recommends you use WSGI (see mod_wsgi at https://code.google.com/p/modwsgi/).

I have used mod_wsgi to host a Django app and it worked alright.

Re: Using Python with XAMPP

PostPosted: 27. February 2013 17:17
by JonB
I was not aware mod_wsgi was included with XAMPP

Re: Using Python with XAMPP

PostPosted: 27. February 2013 23:59
by hackattack142
To be clear, it is not included. You would have to either compile it yourself or find a compatible precompiled version.

If you prefer to not get any additional modules/components, you are pretty much stuck with the CGI method.

Re: Using Python with XAMPP

PostPosted: 28. February 2013 05:32
by JonB
The shebang portion of the Python code also uses #!/usr/bin/python; is this correct?


answer - no, that's for Linux -

CGI Method in detail:

The standard CGI method applies to most scripting languages when they are not loaded as an Apache module (PHP usually is an Apache module). The two big scripting languages that fit this bill are Perl & Python. I should say that almost ANY executable on a server can be run in this mode, it does not have to be a scripting language.

CGI language support comes down to three elements:

A. The language can be installed separately. So you don't have to use the Perl that comes with XAMPP, you could use Strawberry or ActiveStates - or in your case, install Python standalone. Python.org or ActiveStates - also has Python.

B. Location of scripts: CGI is for Common Gateway Interface. In Apache, its the 'ScriptAlias' folder - usually '/cgi-bin'. Every script that works with CGI goes in that folder.

C. Shebang Line: The first line in every CGI script must be the path to the language executable. If the language executable is in the ServerRoot, it can be a relative path. If it is outside the ServerRoot, it should be the complete filesystem path (including drive if on Windows) and the exectable's file name such as "c:\perl\bin\perl.exe"

From one of my installs (for Strawberry Perl) -

Code: Select all
#! "C:\strawberry\perl\bin\perl.exe"


http://en.wikipedia.org/wiki/Common_Gateway_Interface

Good Luck
:)

Re: Using Python with XAMPP

PostPosted: 28. February 2013 14:00
by Nobbie
hackattack142 wrote:Hello,

Per the Python documentation, which you should take a look at to see the various options, (http://docs.python.org/2/howto/webservers.html) CGI is no longer recommended.


I do not agree to this "documentation", the (poor) arguments contra CGI are kind of childish. Of course, if someone makes an error somewhere, things are going wrong. This is the same thing for everyhing concerning the configuration of a webserver.

Configuring Python as CGI and running as CGI is one of the easiest things when configuring a webserver. Anyway, usually this is a task for a well educated Administrator. He will definately laugh if he reads this "funny" arguments contra CGI.

On the other hand, the goal of Xampp is to give non-educated people the opportunity, to install a webserver environment for development as easyly as possible, as this usually is a task for well educated Admins (s. above). It is definately a horrible pain for these non-educated people, to install a full development environment for C and Apache Modules and try to "make" their own build of a mod_wsgi from a tarball or similar. This is a billion times more difficult (especially on Windows) than simply running Python in CGI Mode (what works like a charm for many many years). It is even the same pain to look for a matching precompiled version, which does not collide with the Xampp binarys due to to different C Compilers, Apache Versions etc.

hackattack142 wrote:It recommends you use WSGI (see mod_wsgi at https://code.google.com/p/modwsgi/).


As long as this module is not part of a Xampp installation, this cant be a valid recommendation.

Re: Using Python with XAMPP

PostPosted: 08. November 2013 13:42
by ollybenson
Hi,

Just because I wanted to do this and the instructions weren't very clear.

1. Install Python from python.org (I'm using Python 3.3)
2. In the apache cgi-bin put a file called helloworld.py that says: (obviously change the filepath to the python.exe that you've installed)
Code: Select all
#!"C:\python33\python.exe"
print ("Content-Type: text/html\n")
print ('Hello World')

3. Go to http://localhost/cgi-bin/helloworld.py - you should see it say Hello World!

Olly