I currently have a .NET app that I want to convert to being cross platform, as a growing number of my users want a Mac version. Since this forum doesn't seem to like questions that are "what languages are suitable for these requirements", I'll focus this question on Python as the language of choice. Will Python be a good fit for the requirements below? Drawbacks?

  • Desktop app - many of my users do not have an Internet connection where they use the software, so a web app will not do
  • Object oriented
  • Store data in a relational database as well as configuration files
  • Reporting engine, preferably using templates
  • Network connectivity - Some users setup multiple workstations sharing a single data file
  • Support RS-232 serial port communications, read and write
  • Support video capture
  • Play WAV and other sound files
  • Simple app installation - too many of my users are not very computer savvy, so the easier the install the better
  • Be able to implement a demo or time-limited licensing model

I considered Java, but am hesitant being at the mercy of Oracle and many people have had security concerns about the JVM. I also considered the Mono project to keep the app in .NET, but their MoMA utility shows thousands of unsupported items. I really prefer to have just one code base to maintain, instead of one for Windows and one for Mac. Python seems to be what I keep coming back to.

For some background on myself, most of my experience has been with VB, VB.NET, C#, and Java with some dabbling in PHP/Javascript/HTML. All of my desktop experience has been with Windows.

  • 2
    AFAIK Python isn't included in Windows by default - so users would need to install Python in order to be able to run the software on Windows. That being said, (again AFAIK) the installation for Python isn't as 'easy' as others (such as the JRE), and Python is not something a lot of 'ordinary people' know about. Just my two cents - I wouldn't want to install Python just to run one application, if I were a normal end-user. Feb 4, 2014 at 20:25
  • possible duplicate of Need cross platform language recommendation for desktop app
    – gnat
    Feb 4, 2014 at 20:28
  • @gnat - I am trying to focus on if Python will meet the needs of my app, since the powers that be don't like general questions. If you would like to respond to the question, I'd appreciate it.
    – gpraceman
    Feb 4, 2014 at 20:33
  • 1
    @Chris Cirefice - I thought that I read that you can distribute the Python dlls with the app, so a user did not have to install Python.
    – gpraceman
    Feb 4, 2014 at 20:34
  • 1
    @gpraceman, you are correct. I didn't even think about that! I would suggest using Mono though, as was suggested by another user in your last question (also linked here). Even though there may be some functionality missing, you can always work around it. In the end, it will likely be much easier to make it Mono-compatible than to rewrite the application entirely in Python. I'm sure there are tools out there that can tell you (if Mono doesn't directly) what the problem areas of the application are, if any exist in your current code base. Feb 4, 2014 at 20:52

2 Answers 2


You'd be surprised at how feature rich the python environment is. Going down the list, I'll try and give feedback on each of the points.

  • Desktop app - Yes. You can write applications which require no internet connectivity to function.
  • Object oriented - Big yes. Python supports lots of fun stuff with objects, such as injecting methods into individual instances of classes. You may find some parts less intuitive though, like a lack of a scope, or interfaces.
  • Store data in a relational database as well as configuration files - Yep. You can use databases either locally or through the web. Here's a link to some more info
  • Reporting engine, preferably using templates - A simple google search showed options of varying complexity based on what you need
  • Network connectivity - Yes, networking is fully supported. You can get down to creatig sockets if you want, or use fully formed libararies to do the lifting for you.
  • Support RS-232 serial port communications, read and write - PySerial
  • Support video capture - Video Libraries are an option
  • Play WAV and other sound files - PyAudio
  • Simple app installation - You talked about this in the comments, but you could also look into python eggs as a form of distribution, or .deb packages if you're running debian
  • Be able to implement a demo or time-limited licensing model - This is pretty much just limiting the source code that you provide to them. This is no different than any other language in that regard though.
  • I appreciate your thoughtful and detailed answer. On the desktop app requirement, I would actually love to make it a web app. However, I really don't see many of our users being able to setting up their computer as a web server. Some are really computer challenged.
    – gpraceman
    Feb 7, 2014 at 21:39
  • Python doesn't have interfaces? The current .NET app uses quite a few interfaces.
    – gpraceman
    Feb 7, 2014 at 21:49
  • 1
    No, python doesn't have interfaces. If you approach it trying to replicate 1 to 1 your current .NET implementation, you could run into some significant problems. It definitely requires a slightly different paradigm to understand than C# or Java, but it's not so different as to be incompatible!
    – Ampt
    Feb 8, 2014 at 2:26
  • It does seem to support abstract classes, so not all is lost.
    – gpraceman
    Feb 8, 2014 at 19:48

Ampt gave you a pretty nice answer, so I will just try to complement it a little bit.

AFAIK Python is precisely the type of Programming Language designed for such a program. It is widely used in Back-End. I used it for creating a plugin for a well know open source program and I can tell you is an incredible scripting and programming language. Most of the requirements you may have usually have a library that satisfies them.

It is a bit different from maybe more strongly typed languages such as Java and as Ampt said it can get a bit messy compared with the cleaner look of other languages, so you have to be ordered. But don't worry, Python will complain with any slight error you make indenting, as, as you probably know, it depends on it in order to interpret the code.

In terms of network connectivity, I for example, used paramiko in order to make ssh connections and the experience was quite satisfying.

You must keep in mind that Python is NOT a fast executing language when compared to other languages (as you probably already know). So, it obviously has it's better use cases. Keep in mind this when analyzing if it fits your needs.

As far as getting used to it, it doesn't mean a problem. In fact, you would probably have more of a problem in going BACK to other languages from it, cause it is a fairly simplyfied one, the sintax it uses.

  • I would appreciate any feedback specially from downvotes
    – S. Dre
    Dec 15, 2021 at 16:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.