tags:

views:

116

answers:

6

Hello, I am interested in learning python but my linux skills suck. i would like to develop a medium to large scale web application using python and django but afraid the software may not work well on a windows box. Is there a performance difference in running python on linux vs windows. Is there anything that I should watch out for when developing the application. Also, I am aware that it is very easy integrating C++ libraries with python. Is this statement still true is the code is on a windows box?

Also, if you have a better way to ask this question please feel free to edit the title and description

+3  A: 

Don't tell anybody this, but I've run python/django on windows. It works all right and the performance hit isn't any worse than you would expect from windows. I used MySQL and it installed without a problem. I had to grope around to find out how to manage it (no good ol' sudo /etc/init.d/mysql restart but i eventually found a graphical interface to do what I needed.

aaronasterling
Any chance you could specify that graphical interface for the benefit of the rest of us?
Tim Yates
@Tim Yates. It was something like `services.msc` or something. You had to go to the cute little run option on the 'start' menu and then type it in. I'm not really a windows person and I'd rather forget that portion of my life.
aaronasterling
@TimeYates, @AaronMcSmooth I know for a fact that this can be done through services.msc. You have to press <Windows Key>+'r' to get a run dialog. In there, type in "servcies.msc" (without the quotes) and it should bring you to a list of all services on the system (it also lists if they are currently running and under what conditions they startup). There is a "restart" button which you can use to restart any selected service
inspectorG4dget
A: 

Python program is very easily portable. Most of the time your code will work on any platform that have the appropriate version of python.

One point to be aware of though, is file path handling. Linux, Windows, Macs, etc uses different path schemes, so you shouldn't be handling them as strings; instead use os.path functions to join, split, etc.

There is ultimately some slight performance difference with regard to timing, threading, processing, I/O, but they're nothing to worry about.

Integrating Python and C++ is easy; the only problem is in the C++ side, i.e. you will have to recompile the C++ code.

Lie Ryan
+1  A: 

Shouldn't be a problem. Some people even host Python+Django on Windows.

knitti
+1  A: 

I've been working Py on both Windows and Linux. I favor Linux because of several things:

  1. virtualenvs - once you start working with virtualenvs, there is no turning back.
  2. SHELL - CMD is very frustrating when executing python/management commands in django. Also, you should add python.exe every time :).
  3. ipython works better on Linux.
  4. GeoDjango doesn't work on Vista/7 last time i checked. I spent 3 days trying to set it up. Just for comparison, i set GeoDjango-able development environment in 20 minutes in Linux.
  5. Linux is free :)
  6. Although there is no visible performance impact or incompatibility when working python cross-platform, the benefits of Linux for python development outweigh Windows by a lot. It's a lot more comfortable and definitely will boost your productivity.
  7. ...

IMHO Linux is the smart choice for Python development.

dekomote
+1  A: 
  1. Which software are you affraid will not work on windows, the actual web app or your development enviroment. If you mean the IDE, then I wouldn't worry about that there are very good python IDEs for windows, as for the webapp that's another discussion all together

  2. The statement that "it is very easy integrating C++ libs with python" is not accurate, there are many ways of doing it and they are not all easy, I have personally only tried SWIG, but there are many other alternatives (for example Boost.Python), whoever I wouldn't believe it is as easy to get up and running with some of these tools on a windows enviromeny with out something like mingw or cygwin as at least SWIG is built with *nix in mind

hhafez
A: 

but afraid the software may not work well on a windows box.

Your software will work. The Windows OS may not work as you hope. But that's Windows, not Python.

We develop 100% on Windows. We completely test: Unit test, integration test and user acceptance test on Windows. 100%.

We deploy for production 0% on Windows, 100% on Linux.

We have a few (less than 6) differences in the unit tests that are Windows-specific.

The application has no changes. It works with Apache or not. It works with SQLite or MySQL.

S.Lott