472,145 Members | 1,482 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,145 software developers and data experts.

Question -- Running Programming Python Examples

Here is a newbie question: how do I get the server examples in the
Preview chapter of "Progamming Python" (Lutz) to run? The code is
supposed to be a little webserver on which to run examples, but when I
run it it I get "permission denied". Running it as root gets "address
already in use".

Here is the code (it's example 2.32); comments are from Lutz, not me:

webdir = '.' # where your html files and cgi-bin script directory
live

port = 80 # default http://localhost/, else use http://localhost:xxxx/

import os, sys

from BaseHTTPServer import HTTPServer

from CGIHTTPServer import CGIHTTPRequestHandler

# hack for Windows: os.environ not propogated

[deleted, I'm running linux]
.. . .

os.chdir(webdir) # run in html
root dir

srvraddr = ("", port) # my hostname,
portnumber

srvrobj = HTTPServer(srvraddr, CGIHTTPRequestHandler)

srvrobj.serve_forever() # run as
perpetual demon
END CODE
My other python scripts run fine.

I'm running linux (debian). I'm not running an webserver (that I know
of anyway).

I've fiddled with adding the subdirectory with the code to the python
path, but this doesn't seem to help either. I'm new to all this, but
I've been able to make the other stuff work, and I can't even find the
beginning of what I'm supposed to research to fix this.

Any help would be greatly appreciated, and thanks for your time and
patience.

Aug 4 '07 #1
3 1781
ch*******@gmail.com wrote:
Here is a newbie question: how do I get the server examples in the
Preview chapter of "Progamming Python" (Lutz) to run? The code is
supposed to be a little webserver on which to run examples, but when I
run it it I get "permission denied". Running it as root gets "address
already in use".
The first error is because non-root users cannot bind to ports lower
than 1024. The second error means just what it says: The address is
already in use, so you can't bind to port 80. Something else is already
bound to it; probably you have an HTTP server already running as part of
your default software installation and don't realize it.

Choose another port.

--
Erik Max Francis && ma*@alcyone.com && http://www.alcyone.com/max/
San Jose, CA, USA && 37 20 N 121 53 W && AIM, Y!M erikmaxfrancis
If love is the answer, could you rephrase the question?
-- Lily Tomlin
Aug 4 '07 #2
ch*******@gmail.com wrote:
Here is a newbie question: how do I get the server examples in the
Preview chapter of "Progamming Python" (Lutz) to run? The code is
supposed to be a little webserver on which to run examples, but when I
run it it I get "permission denied". Running it as root gets "address
already in use".

Here is the code (it's example 2.32); comments are from Lutz, not me:

webdir = '.' # where your html files and cgi-bin script directory
live

port = 80 # default http://localhost/, else use http://localhost:xxxx/
There's the trouble. You need special permission to open any of the
ports up through 1023. As root, you have permission, but apparently
some process already has that port opened, almost certainly a web server
you start up at boot time, probably apache.

So either kill off the web server that has port 80 opened, or better
yet, just change the port to something else. A common choice is port
8080. This does not require superuser permission, and is probably free.
port = 8080

If you do that, then you access the server on port 8080 with url's that
look like this:

http://localhost:8080/what/ever/..., or
http://machine-name:8080/what/ever/...,

Gary Herron
>

import os, sys

from BaseHTTPServer import HTTPServer

from CGIHTTPServer import CGIHTTPRequestHandler

# hack for Windows: os.environ not propogated

[deleted, I'm running linux]
. . .

os.chdir(webdir) # run in html
root dir

srvraddr = ("", port) # my hostname,
portnumber

srvrobj = HTTPServer(srvraddr, CGIHTTPRequestHandler)

srvrobj.serve_forever() # run as
perpetual demon
END CODE
My other python scripts run fine.

I'm running linux (debian). I'm not running an webserver (that I know
of anyway).

I've fiddled with adding the subdirectory with the code to the python
path, but this doesn't seem to help either. I'm new to all this, but
I've been able to make the other stuff work, and I can't even find the
beginning of what I'm supposed to research to fix this.

Any help would be greatly appreciated, and thanks for your time and
patience.

Aug 4 '07 #3
That fixed it, and Gary's item on pointing my browser to the proper
port answered the next question percolating in my mind. It now runs
as advertised.

Thanks to you both!
Aug 4 '07 #4

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

6 posts views Thread by Fernando Rodriguez | last post: by
4 posts views Thread by Mark | last post: by
6 posts views Thread by bobdc | last post: by
3 posts views Thread by Edg Bamyasi | last post: by
26 posts views Thread by Kevin Walzer | last post: by
90 posts views Thread by John Salerno | last post: by
25 posts views Thread by Nicholas Parsons | last post: by
reply views Thread by leo001 | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.