Newbie advice

C

CSharpner

Alright, I'm not new to programming, but I'm diving in head first into
Python for the first time. I'm running on Windows 7, just installed
"Eclipse Java EE IDE for Web Developers" and installed PyDev in it and
installed Python 2.6. I've written my first "Hello World" program,
which simply displays "Hello World!" in the console output.

Here's what I /want/ to do, but don't know where to begin:

- Write web services in Python (I've done plenty of this in .NET,
BTW).
- Write plain DLLs (is that even an option in Python (I told you I was
a newb to Python, didn't I? :))
- Write a web app (HTML front end, Python web services called from
JavaScript).
- Write a plain old web app with Python (no web services or Ajax, just
plain HTML & Python).
- Is it possible to create a Windows client desktop GUI app with
Python? How? How 'bout a Linux GUI app?

I don't know how to create and write a Python project with Eclipse to
tell it to "be" a web service or a web app, or if what I need to do in
the code to make as such, no "run" it from Eclipse to launch the app
in a web server and launch a browser automatically. Can I debug after
doing this? In other words, can I put break points in my web services
or web apps and go back into the IDE to step through the code for web
services and web apps?

Also, I'm not tied to Eclipse. I'm totally open to other IDEs as
well. SharpDevelop with the Python plugin looks interesting too.

And finally, I'm not completely committed to using Windows to host my
development either. I'm willing to use Linux too (but would prefer
Windows... at least to get started, until I'm comfortable enough with
Python).

TIA
 
A

alex23

CSharpner said:
Here's what I /want/ to do, but don't know where to begin:

Welcome to the fun :)
- Write web services in Python (I've done plenty of this in .NET,
BTW).

I'm a big fan of CherryPy: http://www.cherrypy.org/

It's very straightforward and easy to get into.
- Write plain DLLs (is that even an option in Python (I told you I was
a newb to Python, didn't I? :))

I'd recommend Cython: http://www.cython.org/

It allows you to write dlls in (a subset of) Python that are converted
to and compiled in C.
- Write a web app (HTML front end, Python web services called from
JavaScript).
- Write a plain old web app with Python (no web services or Ajax, just
plain HTML & Python).

Again, CherryPy, or depending on your needs one of the many, many web
frameworks; I'm partial to Turbogears, but Django seems to be the most
popular.

For a good overview of what's out there: http://wiki.python.org/moin/WebFrameworks
- Is it possible to create a Windows client desktop GUI app with
Python?  How?  How 'bout a Linux GUI app?

Python includes a wrapper around Tcl/Tk, which many consider to be
kinda ugly by modern standards, but is cross platform and part of the
stdlib (it's not always included with *nix distros by default but then
it's a lot easier to make that happen during install under most
package managers). PyQT, PyGtk and wxPython all have their active
proponents.

There are plenty of GUI libs out there: http://wiki.python.org/moin/GuiProgramming

However, if you're already comfortable with HTML/CSS, I'd recommend
taking a look at Pyjamas, which started as a port of the Google Web
Toolkit, taking Python code and compiling it into javascript. The
associated project, Pyjamas-Desktop, is a webkit-based desktop client/
widget set; so ideally you only have to write one UI and it'll run
both on the web & the desktop.

Pyjamas: http://pyjs.org/
Pyjamas-Desktop: http://pyjd.sourceforge.net/
And finally, I'm not completely committed to using Windows to host my
development either.  I'm willing to use Linux too (but would prefer
Windows... at least to get started, until I'm comfortable enough with
Python).

Google App Engine allows you to host our app on Google servers, with a
very generous free quota: http://code.google.com/appengine/

It supports Django and several other of the web frameworks. It's worth
noting that it uses the non-relational BigTable at the backend, which
seems to cause a lot of grief to relationally-trained minds :)

Hopefully something in here is enlightening :)
 
D

Diez B. Roggisch

CSharpner said:
Alright, I'm not new to programming, but I'm diving in head first into
Python for the first time. I'm running on Windows 7, just installed
"Eclipse Java EE IDE for Web Developers" and installed PyDev in it and
installed Python 2.6. I've written my first "Hello World" program,
which simply displays "Hello World!" in the console output.

Here's what I /want/ to do, but don't know where to begin:

- Write web services in Python (I've done plenty of this in .NET,
BTW).

This depends. If by "web services" you mean generally HTTP-based RPC,
such as JSON or XMLRPC - yes. If you talk about offering a SOAP-server,
then Python is rather painful in that respect. Which partially is his
(or his 3rd-party-libs) fault, but IMHO mostly because that whole
standard is as crappy as it can get, and my personal experience told me
to not expect interoperability from it anyway.

- Write plain DLLs (is that even an option in Python (I told you I was
a newb to Python, didn't I? :))

There is elmer: http://elmer.sourceforge.net/
And you can create COM servers with win32-extensions, and AFAIK
IronPython allows you to create something like DLLs also.
- Write a web app (HTML front end, Python web services called from
JavaScript).

Plenty of options here, popular choices of frameworks include Django,
TurboGears 1 & 2, Pylons, werkzeug, web.py and some more.
- Write a plain old web app with Python (no web services or Ajax, just
plain HTML & Python).

See above, just don't use AJAX....
- Is it possible to create a Windows client desktop GUI app with
Python? How? How 'bout a Linux GUI app?

Both, with various toolkits such as Tk, Wx, Qt, GTK.
I don't know how to create and write a Python project with Eclipse to
tell it to "be" a web service or a web app, or if what I need to do in
the code to make as such, no "run" it from Eclipse to launch the app
in a web server and launch a browser automatically. Can I debug after
doing this? In other words, can I put break points in my web services
or web apps and go back into the IDE to step through the code for web
services and web apps?


First of all: in python, you don't code like in VisualStudio, with an
application template wizard. You simply start coding. Some of the
frameworks such as TurboGears and Django actually do have such wizards,
but they aren't integrated into the IDE, and once you started, you don't
automate anything further. And usually, this is a good thing - the
wizard-stuff is for languages that need a lot of boilerplate. Python is
quite successful in not needing that.

Debugging is certainly possible the way you want it, or at least close
to that. I personally am satisfied with the built-in debugger, pdb. But
PyDev comes with one that's supposed to be quite good as well, and
winpdb is also deemed excellent.
Also, I'm not tied to Eclipse. I'm totally open to other IDEs as
well. SharpDevelop with the Python plugin looks interesting too.

And finally, I'm not completely committed to using Windows to host my
development either. I'm willing to use Linux too (but would prefer
Windows... at least to get started, until I'm comfortable enough with
Python).

Cross-platform, especially within the web-world, is usually a no-brainer
in python.

Diez
 
C

CSharpner

Welcome to the fun :)


I'm a big fan of CherryPy:http://www.cherrypy.org/

It's very straightforward and easy to get into.


I'd recommend Cython:http://www.cython.org/

It allows you to write dlls in (a subset of) Python that are converted
to and compiled in C.


Again, CherryPy, or depending on your needs one of the many, many web
frameworks; I'm partial to Turbogears, but Django seems to be the most
popular.

For a good overview of what's out there:http://wiki.python.org/moin/WebFrameworks


Python includes a wrapper around Tcl/Tk, which many consider to be
kinda ugly by modern standards, but is cross platform and part of the
stdlib (it's not always included with *nix distros by default but then
it's a lot easier to make that happen during install under most
package managers). PyQT, PyGtk and wxPython all have their active
proponents.

There are plenty of GUI libs out there:http://wiki.python.org/moin/GuiProgramming

However, if you're already comfortable with HTML/CSS, I'd recommend
taking a look at Pyjamas, which started as a port of the Google Web
Toolkit, taking Python code and compiling it into javascript. The
associated project, Pyjamas-Desktop, is a webkit-based desktop client/
widget set; so ideally you only have to write one UI and it'll run
both on the web & the desktop.

Pyjamas:http://pyjs.org/
Pyjamas-Desktop:http://pyjd.sourceforge.net/


Google App Engine allows you to host our app on Google servers, with a
very generous free quota:http://code.google.com/appengine/

It supports Django and several other of the web frameworks. It's worth
noting that it uses the non-relational BigTable at the backend, which
seems to cause a lot of grief to relationally-trained minds :)

Hopefully something in here is enlightening :)

Thanks! Lots of good stuff in there. I think that's plenty to get me
started.
 
C

CSharpner

This depends. If by "web services" you mean generally HTTP-based RPC,
such as JSON or XMLRPC - yes. If you talk about offering a SOAP-server,
then Python is rather painful in that respect. Which partially is his
(or his 3rd-party-libs) fault, but IMHO mostly because that whole
standard is as crappy as it can get, and my personal experience told me
to not expect interoperability from it anyway.


There is elmer:http://elmer.sourceforge.net/
And you can create COM servers with win32-extensions, and AFAIK
IronPython allows you to create something like DLLs also.


Plenty of options here, popular choices of frameworks include Django,
TurboGears 1 & 2, Pylons, werkzeug, web.py and some more.


See above, just don't use AJAX....


Both, with various toolkits such as Tk, Wx, Qt, GTK.




First of all: in python, you don't code like in VisualStudio, with an
application template wizard. You simply start coding. Some of the
frameworks such as TurboGears and Django actually do have such wizards,
but they aren't integrated into the IDE, and once you started, you don't
automate anything further. And usually, this is a good thing - the
wizard-stuff is for languages that need a lot of boilerplate. Python is
quite successful in not needing that.

Debugging is certainly possible the way you want it, or at least close
to that. I personally am satisfied with the built-in debugger, pdb. But
PyDev comes with one that's supposed to be quite good as well, and
winpdb is also deemed excellent.





Cross-platform, especially within the web-world, is usually a no-brainer
in python.

Diez

Thanks Diez! Both your and Alex's advice are a great help!
 
B

Bryan

Alright, I'm not new to programming, but I'm diving in head first into
Python for the first time.  I'm running on Windows 7, just installed
"Eclipse Java EE IDE for Web Developers" and installed PyDev in it and
installed Python 2.6.  I've written my first "Hello World" program,
which simply displays "Hello World!" in the console output.

Here's what I /want/ to do, but don't know where to begin:

- Write web services in Python (I've done plenty of this in .NET,
BTW).
- Write plain DLLs (is that even an option in Python (I told you I was
a newb to Python, didn't I? :))
- Write a web app (HTML front end, Python web services called from
JavaScript).
- Write a plain old web app with Python (no web services or Ajax, just
plain HTML & Python).
- Is it possible to create a Windows client desktop GUI app with
Python?  How?  How 'bout a Linux GUI app?

I don't know how to create and write a Python project with Eclipse to
tell it to "be" a web service or a web app, or if what I need to do in
the code to make as such, no "run" it from Eclipse to launch the app
in a web server and launch a browser automatically.  Can I debug after
doing this?  In other words, can I put break points in my web services
or web apps and go back into the IDE to step through the code for web
services and web apps?

Also, I'm not tied to Eclipse.  I'm totally open to other IDEs as
well.  SharpDevelop with the Python plugin looks interesting too.

And finally, I'm not completely committed to using Windows to host my
development either.  I'm willing to use Linux too (but would prefer
Windows... at least to get started, until I'm comfortable enough with
Python).

TIA

I first started coding using Visual Studio + VB.net in college (not a
CS major). I have now sworn off all that jazz for python+vim+*nix.
Your thinking reminds me very much of how I used to think about
solving problems with software. I thought in terms of the tools I
had, which was basically which VS templates were available, which GUI
widget library I could buy, which MS application framework I could use
etc.

At some point I decided to start all over. I started reading *basic*
computer programming books, teaching myself C, and doing all coding in
a simple text editor. It was a tough period but I'm glad I went
through it because I think about programming completely differently
now. Now a programming language is mostly an implementation detail.
I design the solution without even thinking about programming
languages or tools. I choose to implement most solutions in python
because its syntax describes what I want to do the cleanest, its not
tied to a corporate strategy, it has tons of useful libraries bla bla
bla.

This post describes the IDS vs language divide that I crossed over:
http://osteele.com/archives/2004/11/ides

Python can do everything you ask in your post, and their are many
resources to help you do those things. I just wanted to give you some
advice for the bigger picture.

Bryan
 
C

CSharpner

I first started coding using Visual Studio + VB.net in college (not a
CS major).  I have now sworn off all that jazz for python+vim+*nix.
Your thinking reminds me very much of how I used to think about
solving problems with software.  I thought in terms of the tools I
had, which was basically which VS templates were available, which GUI
widget library I could buy, which MS application framework I could use
etc.

At some point I decided to start all over.  I started reading *basic*
computer programming books, teaching myself C, and doing all coding in
a simple text editor.  It was a tough period but I'm glad I went
through it because I think about programming completely differently
now.  Now a programming language is mostly an implementation detail.
I design the solution without even thinking about programming
languages or tools.  I choose to implement most solutions in python
because its syntax describes what I want to do the cleanest, its not
tied to a corporate strategy, it has tons of useful libraries bla bla
bla.

This post describes the IDS vs language divide that I crossed over:http://osteele.com/archives/2004/11/ides

Python can do everything you ask in your post, and their are many
resources to help you do those things.  I just wanted to give you some
advice for the bigger picture.

Bryan

Thanks Bryan. Though my post may have misled. I feel the same way. I
started out on text editor source editing because that's all we had
back in the early 80's with the old 8-bits. Actually, line editor
editing is what I started on... enter one line at a time and it's
"entered"... couldn't even cursor up and down... Before I had an
assembler, I'd write assembly programs with /machine/ code, hex byte
by hex byte. Was pretty cryptic by today's standards, but waaay fun.
Anyway, your points are right on and I'm glad to see you have moved in
this direction, though I'd encourage you not to dismiss tools that can
make your job easier too. Take it from someone who went through all
of it from hex byte editing up through the latest IDEs: You don't
want to forsake the tools that can reduce your workload. You'll be
more valuable. You don't want to be completely dependent on them
either, of course, but I know I don't have to tell you /that/ because
you're clearly not dependent on them.

My questions were more geared towards: I know code isn't just a "web
service" because I will it and it doesn't "connect" with a browser
(for lack of a better term) because I wish it. There are steps to be
taken to make those happen. I'm merely querying "what are they?".

Having said that and agreeing with your premise, I will say that after
having used dozens of languages, technologies, architectures, tools,
etc... over the last 27 years, at the end of the day, I have to
produce for the people paying me, so I won't /avoid/ "tools", for
sure. If there's anything I can use to get my product out earlier and/
or help produce more robust code and more maintainable code for the
folks that come in behind me, you can bet your favorite, sweet text
editor, I'll use a tool that improves my productivity, if there /is/
one. ;) I won't want to become /dependent/ on it either though.
I design the solution without even thinking about programming
languages or tools

Excellent Bryan! That's the way it's supposed to be done!!! You're
on your way.
 
L

lkcl

However, if you're already comfortable with HTML/CSS, I'd recommend
taking a look atPyjamas, which started as a port of the Google Web
Toolkit, taking Python code and compiling it into javascript. The
associated project,Pyjamas-Desktop, is a webkit-based desktop client/
widget set; so ideally you only have to write one UI and it'll run
both on the web & the desktop.

Pyjamas:http://pyjs.org/
Pyjamas-Desktop:http://pyjd.sourceforge.net/


thank you for mentioning these, chris. the information on pyjd is
slightly out-of-date.

* pyjamas-desktop was merged into pyjamas as of the 0.6 release.

* there are now three alternative back-ends for pyjamas-desktop,
(just as there are three major web browser engines). MSHTML,
xulrunner and webkit.

Opera's engine cannot be included because Opera's developers have
not responded to invitations to provide an engine / library to
which
python bindings can be added. when they have provided python
bindings,
a port of pyjd to use them can be done in approximately two weeks.

* the webkit-based back-end is the least-recommended, due to
intransigence
of the webkit developer, mark rowe. mark rowe has shown consistent
disrespect for free software contributions to make webkit with glib/
gobject
bindings actually useful and useable, and has ensured that anyone
who
wishes to proceed with getting webkit its glib/gobject bindings
will
have an unacceptably hard time. efforts to work with the other
webkit
developers, which were proving successful, were deliberately
destroyed
by, and terminated by, mark rowe.

* the MSHTML-based back-end is surprisingly the most successful of
the
three pyjd ports. it requires _very_ little in the way of
libraries
to be installed: only python-comtypes (at 250k) which is in
complete
contrast to the other ports, which require whopping 30mbyte
installs
of libraries and dependencies.

* the xulrunner-based back-end is the best option for unix-based
systems.
the design of xulrunner's core infrastructure, XPCOM, however, is
slightly ... "incomplete". it is based on DCOM, but does not
provide
the exact same capabilities as DCOM (no coclasses). the upshot is
that current releases of xulrunner work perfectly well for
_everything_
but 2D SVG Canvas "Image" loading. (i have a patch for xulrunner
which
fixes this one single error)


so - it's a mixed and interesting bag of tricks.

full and comprehensive non-javascript bindings to web technology seems
to be a thoroughly misunderstood and underexploited area, with several
variations on the same theme being available from several competitive
sources.

the nice thing about pyjamas is that just as pyjs makes all the
differences "go away" when pyjamas apps are compiled to run in web
browsers, pyjamas-desktop makes those differences "go away" when
pyjamas apps are run as pure python on the desktop.

l.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,764
Messages
2,569,567
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top