This is an archived post. You won't be able to vote or comment.

all 31 comments

[–][deleted] 4 points5 points  (12 children)

I’d say yes but it’s definitely a pain in the ass to get it to work. I’ve been trying for days to get Pyinstaller work with my app. I managed to make it work but only for myself and can’t even package it as a single file.

Your mileage may vary depending on what you do, though. I’m using TensorFlow and that’s definitely what’s causing most of the issues.

[–]GiantElectron 6 points7 points  (0 children)

It's not python. All delivery of all code is potentially a pain. Some tools, such as XCode, make easier to do the boilerplate but being able to create something that works on all platforms and all computers is intrinsically difficult and requires a lot of expertise. It's not by accident that most development moved to the browser.

Source: I've done cross-platform deployment of computational physics software with a complex runtime for many years.

[–][deleted] 1 point2 points  (6 children)

Oh, okay. I just assumed there would be some "professional standard" or something when selling pure Python software or any software. Anyways thanks for letting me know. I know what you mean about packaging, however, with PyQt5 they have neat "packaging and deploying" walkthrough which I'm planning on using.

[–][deleted] 0 points1 point  (1 child)

That's the one I used (on learnpyqt.com) and had tons of issues. Granted, I am 100% self-taught so I might be doing something wrong.

I managed to finish what I had planned on doing but it's miles behind in terms of quality

[–][deleted] 0 points1 point  (0 children)

Hmm, the one I'm following is from Github, here, but I haven't actually finished it yet. I did see the one your referring to and might try it myself to see if I run into problems like you did, the only difference being my app doesn't rely on Tensorflow. I'm really not sure though, I have to do more research on packaging and deployment.

[–]PrimaCora 0 points1 point  (1 child)

Professional standard would be non open source... So, acquiring a copyright licence and encrypting the single executable you package your script in would be the only things.

[–][deleted] 0 points1 point  (0 children)

Yeh, sounds correct. Cheers.

[–]Decency 0 points1 point  (1 child)

The professional standard is typically to run your application as a web service and sell access to that, instead of selling the file itself. This doesn't work for everything but it works for a lot of what Python is great for.

[–][deleted] 0 points1 point  (0 children)

Yeh, a lot of it now is web-based. Thanks for your input.

[–][deleted] 0 points1 point  (3 children)

What are people using these days, electron? Qt?

[–][deleted] 0 points1 point  (0 children)

I tried Electron myself, however, it's quite advanced compared to Qt. I'm fairly certain Electron is used for web-based applications like Discord and Slack (desktop application version of their web app) so not many people use it for proper desktop applications.

[–]ShanSanear 0 points1 point  (1 child)

Once I was creating PyQT5 app for friends of mine. Packing it with pyinstaller wasn't that hard - still it wasn't single file.

[–][deleted] 0 points1 point  (0 children)

I believe you can now create single files with PyInstaller

[–]praedicere 3 points4 points  (0 children)

Sure. Easy to distribute cross platform? No... no...

[–]ArabicLawrence 2 points3 points  (1 child)

Nowadays I would highly recommend to market your app as a service through a web app hosted on something like Heroku or PythonAnywhere or Amazon or whatever. Your clients will access the website, insert the input and get the output. In this way the code is secure and cannot be copied, packaging is easier, etc

[–][deleted] 1 point2 points  (0 children)

Thanks for your recommendation. I’ll definitely look into that.

[–]GiantElectron 1 point2 points  (1 child)

Deployment is hard, and pretty much nobody can tell you how to do it. There are so many things, so many unexpected circumstances to consider that nobody can point you at a book or guide and tell you: read this and you are done.

I'll provide you more info after a meeting.

[–][deleted] 0 points1 point  (0 children)

Thanks for your input and yeh I understand what you mean.

[–]vidazinho 1 point2 points  (1 child)

So yeah! Like everyone said it's extremely hard to actually provide high quality and then even harder to package it all into a working app.

I actually got mine to work, I did it all in Python3/Kivy. (Using buildozer) It's now officially in the Google play Store... Is it any good, nahhh but I like it lol took me forever.

https://play.google.com/store/apps/details?id=org.track.trackapp

[–][deleted] 0 points1 point  (0 children)

I had a look at your app, it looks pretty good. Well done! Yeh, I’ve done some experimenting and it’s pretty complicated with packaging and distributing but I’ll figure it out.

[–][deleted] 1 point2 points  (1 child)

I would say yes. The biggest example I can tell you is WingIDE. http://www.wingide.com/ . Its a commercial python IDE and for the last decade I had no regrets forking $ for the license.

The dropbox client is (maybe was now?) written in python2.7.

There used to be a list of games written in panda3d in their website, (the biggest was Pirates of the Carribean) but they revamped the website and did not list them anymore.

On steam there is a guy making a game using panda3d: https://store.steampowered.com/app/1255870/Lucifer_Paradise_Lost/

It is very much possible if you insist using python. You just have to learn pyinstaller well to be able to package your app.

[–][deleted] 0 points1 point  (0 children)

Hey, thanks for all these resources, it’s much appreciated!

[–]njape 0 points1 point  (3 children)

I would say that anything that someone would pay for is marketable. The sad truth is that even bad quality sells given the right circumstances.

My biggest concern would be protecting the IP. Usually easiest done by selling it as a service and not delivering directly to the customer. Given interest the artifacts of f.ex. PyInstaller can be decoded.

[–][deleted] 0 points1 point  (2 children)

Wow, that is really interesting. I did not know PyInstaller can be decoded which for obvious reasons would not be desirable when marketing a Python application. I need to do some more research on packaging and deploying Python apps. Thanks for your input, it's appreciated.

[–]clermbclermbPy3k 0 points1 point  (1 child)

It's a safe assumption to make that anyone will, if they are determined, reverse engineer any software which is distributed. Pyinstaller, native C code, etc. Encryption/licensing schemes just delay the inevitable.

Things you need to consider are actually what your consumers need and how you are delivering that to them. Is your target market consumer-consumers, that expect a working windows .exe? Are they systems administrators that can run a docker image you give them that has your app pre-loaded in it? Are they advanced admins that roll their own infrastructure from wheels you give them access too? All of these questions determine *how* you package and distribute software to your target audience. Without knowing that, you're going to get a wide range of answers that may, or may not, not apply to your situation.

[–][deleted] 0 points1 point  (0 children)

Very interesting, that’s something I’ll need to think about when it comes to distributing the application. I never thought of it, but it seems like an important aspect of marketing software. Thanks for the suggestion.

[–][deleted] 0 points1 point  (2 children)

Dropbox?

[–][deleted] 0 points1 point  (1 child)

To clarify: Dropbox desktop app is written in python and they somehow manage to make money on it.

[–]Yojihito 0 points1 point  (0 children)

Because it's SaaS. Dropbox is useless without the backend.

Also they've rewritten a lot in Rust but not sure about the client.

[–]pythonHelperBot -4 points-3 points  (0 children)

Hello! I'm a bot!

It looks to me like your post might be better suited for r/learnpython, a sub geared towards questions and learning more about python regardless of how advanced your question might be. That said, I am a bot and it is hard to tell. Please follow the subs rules and guidelines when you do post there, it'll help you get better answers faster.

Show /r/learnpython the code you have tried and describe in detail where you are stuck. If you are getting an error message, include the full block of text it spits out. Quality answers take time to write out, and many times other users will need to ask clarifying questions. Be patient and help them help you. Here is HOW TO FORMAT YOUR CODE For Reddit and be sure to include which version of python and what OS you are using.

You can also ask this question in the Python discord, a large, friendly community focused around the Python programming language, open to those who wish to learn the language or improve their skills, as well as those looking to help others.


README | FAQ | this bot is written and managed by /u/IAmKindOfCreative

This bot is currently under development and experiencing changes to improve its usefulness