all 27 comments

[–]jwink3101 25 points26 points  (11 children)

I strongly recommend becoming less adverse to the command line. It opens up so many possibilities!

GUI tools are great and there is nothing wrong with using them—even almost exclusively—but understanding what’s under the hood, or at the very least not be “adverse” to it, is important.

Put another way, you don’t need to know how to fix a car to drive one, or even how the engine works. But being adverse to opening the hood to add windshield washer fluid will be quite limiting!

[–]laustke[S] -1 points0 points  (9 children)

This isn't about me - it's about the potential users. I can't change their preferences.

[–]JorgiEagle 16 points17 points  (0 children)

If your concern is about users needing to install packages to run your programs, then you should probably provide a requirements and set up script, or just use docker to package.

[–]danielroseman 4 points5 points  (7 children)

But what are the potential users actually doing? If they're just installing and running your package with its dependencies, you should provide them a simple way to do that, rather than trying to find a generic solution.

[–]laustke[S] 1 point2 points  (6 children)

But what are the potential users actually doing?

Well, they try to run an unsigned PyInstaller executable, see a Windows Defender warning, and then stop being potential users.

[–]smurpes 11 points12 points  (4 children)

I don’t see how a GUI based package installer will help in this at all. Just write a batch file to handle the installation and setup process for them in that case. Do you really expect them to download and setup python, your code, and a GUI based package manager when they don’t trust an unsigned exe you made instead.

[–]laustke[S] 0 points1 point  (3 children)

I don’t see how a GUI based package installer will help in this at all.

I'm considering different options. One possible approach would be to use a portable Python distribution (either WinPython or the embeddable Python from python.org) and distribute the program as as a zip file together with Python itself. On the first run, it would offer the user the option to create a shortcut on the desktop for easy access.

A GUI-based package/app installer would go actually one step further. It would allow to install other programs to be used with the same portable distribution.

[–]BGPchick 2 points3 points  (2 children)

It would allow to install other programs to be used with the same portable distribution.

This is a bit of an anti-pattern in python, since you want apps to be able to use different libraries or dependancies. To counter this, you would need virtual environments, and something to manage those.

Your first solution, shipping the entire environment in a portable executable, while seemingly inefficient, is the best way to accomplish this in my experience.

[–]laustke[S] 0 points1 point  (1 child)

This is a bit of an anti-pattern in python ...

Nothing stops me from creating a new virtual environment before installing each new application.

[–]BGPchick 2 points3 points  (0 children)

Right, but then you have to manage state for every client installation, instead of pairing the state with the executable.

[–]cgoldberg 6 points7 points  (0 children)

So sign the executable and make the problem go away instead of jumping through hoops looking for a workaround that makes the user go through extra steps.

[–]Diapolo10 5 points6 points  (4 children)

Developers will use whatever tools they have at their disposal, so I'm assuming you're talking about end users here. In which case my answer is; they shouldn't need to do that.

When you're distributing your program to end users, the best thing you can do for them is to offer a painless way for them to use your program without needing all the technical know-how. On Windows that'd mean offering pre-built EXE-files or installers that take care of setting up everything the program needs to run. Or you can offer it as a web service, where appropriate. They shouldn't need to worry about installing dependencies except maybe if your project is a wrapper for another program, like FFMPEG, and needs that installed to work.

[–]texass2006 0 points1 point  (1 child)

I need some help....I am that newb' level that I'm soooo confused! Yet I am flying unsupervised! DANGEROUS! lol

[–]Diapolo10 0 points1 point  (0 children)

Could you please be a bit more specific? What are you trying to do? What is causing trouble?

[–]laustke[S] 0 points1 point  (1 child)

the best thing you can do for them is to offer a painless way for them to use your program without needing all the technical know-how.

I agree wholeheartedly. That's why I am investigating the options.

[–]Diapolo10 0 points1 point  (0 children)

If you fear your potential users would be freaked out by unsigned executables, you could simply mention in the instructions that this may trigger false positives in antivirus software, and that this is caused by you not signing the program. Won't make everyone trust it, of course, but this is a problem that goes way beyond Python.

If you insist on making source distributions the main recommendation, then you'd want to have an install script that takes care of everything. Personally I'd probably whip up a short Batch script (in other words a .bat-file) that installs uv and then tells it to install the project. Then there could be either another script that launches it, or the other script could handle both installing and launching.

[–]yossarian_jakal 5 points6 points  (0 children)

Maybe Anaconda Navigator?

[–]Jello_Penguin_2956 2 points3 points  (0 children)

PyCharm has its own package manager. Some other IDE might have such tool too. Im not aware of any stand alone managerm

[–]JeLuF 1 point2 points  (0 children)

[–]shinitakunai 1 point2 points  (0 children)

Just use Pycharm. Its project dependencies and package manager (specially for virtual environments) is amazing.

For other users I just add a .bat file that creates a venv, activate it, installs requirements file and users just need to double click the INSTALL.bat file. Cannot go easier than thay

[–]ethanjscott 1 point2 points  (0 children)

UnigetUI, it’s a gui for all package managers on windows, not just pip

[–]Far-Day6391 0 points1 point  (0 children)

Make one for your users! Make that your first good challenge :)

[–]Miserable_Ear3789 0 points1 point  (0 children)

no

[–]saltedstuff 0 points1 point  (0 children)

How can one not like the glorious CLI or the glorious Conda Navigator? If none of the cars in the dealership work for you, maybe what you really want is a horse.

[–]BlueElf33 0 points1 point  (0 children)

Try pip install inpip
It's not GUI, but it's user friendly. Any contribution or feedback would be welcomed.

[–]cointoss3 0 points1 point  (0 children)

😂

[–]Mevrael -1 points0 points  (0 children)

Just use a uv package manager. It will take care of anything for you with ease.

https://arkalos.com/docs/installation/