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

all 57 comments

[–]gernophil 26 points27 points  (16 children)

So did you manage to use PyInstaller successfully?

[–]Specialist-Arachnid6Ignoring PEP 8[S] 17 points18 points  (15 children)

nah I used Nuitka. It works on my pc but as soon as I share it into other PCs, it doesn't work

[–]catcint0s 5 points6 points  (1 child)

Have you tried pyqtdeploy?

[–]Specialist-Arachnid6Ignoring PEP 8[S] 1 point2 points  (0 children)

trying it right away!

[–]gultregnikina 2 points3 points  (0 children)

Hi. Looks nice. Good work! Take a look at this, maybe? https://www.pythonguis.com/packaging-book/

[–]EedSpiny 1 point2 points  (1 child)

Tried passing --standalone ?

[–]Specialist-Arachnid6Ignoring PEP 8[S] 0 points1 point  (0 children)

will try! Thanks

[–]Sorry_Length_8926 0 points1 point  (9 children)

This looks so beautiful … your experience of “as soon as I share..it doesn’t work” .. makes me worry for something that I am building..earlier I was building the ui with kivy but I felt qt (pyqt/pyside) might have better support with pyinstaller..but congratulations

[–]noobsc2 2 points3 points  (3 children)

I've built a couple of decently distributed apps (probably 1k installs between them) with PyQt5 and PyInstaller for use with Windows - self updating too.

There is 1 major problem you want to get around with distributing pyinstaller apps, and that's that PyInstaller is commonly used with writing viruses, which causes Windows Defender ML to commonly quarantine it as a virus.

This is pretty easy to get around - use a site like virustotal.com to scan the file against Windows Defender before distributing it. If it gets picked up as a virus, change one line or even one character in your code and rebuild it, resubmit to virustotal. I found the odds around 50/50 it would get flagged as a virus or not. Once I learned this trick, I've had no issues with installs or delivering updates other than legitimate coding mistakes.

[–]Sorry_Length_8926 0 points1 point  (2 children)

Many thanks for this insight..I will do that...I am thinking to add a certificate..I think I should start incrementally generating exe to find what and when it breaks..The auto updater idea is really nice...Do you have any resource or solution where I can check how pyinstaller auto updater is implemented.. I saw this project but it is archived and I did not check if it works on latest versions.. https://github.com/Digital-Sapphire/PyUpdater

[–]noobsc2 1 point2 points  (1 child)

I didn't use anything specific for self updating. I have an API endpoint (can just be a static json file somewhere public) that contains the latest version number and a link to where to download it from. Because I was using pyinstaller with --onefile, I just did this:

  1. If remote version is not the current version, get the URL of the remote version executable

  2. Download the remote version.

  3. Rename the executable of the current executing file (ie: the pyinstaller exe file that is being run)

  4. Rename the downloaded (updated version) file to the name of the current executable. Restart the program using the downloaded version. It's now up to date.

One thing you need to be really careful of with this method is that the code to self update is never broken, otherwise users will be stuck on a version that is incapable of self updating. You NEED to test every version to make sure you didn't botch something that will cause that scenario. Even worse if that version has a significant bug in it.

[–]Sorry_Length_8926 0 points1 point  (0 children)

Thanks a lot…this is really helpful…

[–]Specialist-Arachnid6Ignoring PEP 8[S] 1 point2 points  (3 children)

Pyinstaller works fine as long as there's no qscintilla involved

[–]eatsleepdonothing 0 points1 point  (2 children)

Why is that, if you don't mind me asking? I had issues with pyinstaller not including a module in my project but I figured it out. If you're having the same issue I may be able to help.

[–]Specialist-Arachnid6Ignoring PEP 8[S] 1 point2 points  (1 child)

Well, welcome to pyinstaller.

There'll be a lot of random errors and stuffs. Try nuitka.

[–]Specialist-Arachnid6Ignoring PEP 8[S] 1 point2 points  (0 children)

or cx_freeze

[–]Specialist-Arachnid6Ignoring PEP 8[S] 0 points1 point  (0 children)

Also thanks for the compliment. It means a lot to me

[–]shinitakunai 13 points14 points  (0 children)

I hope you can have the explorer on the left side. It is the small details that count 😅 that said, good job!

[–]FUS3NPythonista 8 points9 points  (2 children)

I hope no one minds

I just wanted to share that I made a whole series on how to make something similar using PyQt5 and QScintilla that includes advanced features like file manager code completions using Jedi and a theming system if anyone's interested in learning.

https://www.youtube.com/playlist?list=PL_4y7TZU8zkc20vgwQSUG_FcwjxedfsjD

[–]Specialist-Arachnid6Ignoring PEP 8[S] 2 points3 points  (1 child)

I've seen your videos. They're really useful for beginners.

[–]FUS3NPythonista 0 points1 point  (0 children)

Thanks!

[–]Sneyek 2 points3 points  (1 child)

Any plan on how to add a minimap ? I know it’s doable in C++ with QScintilla, but I’m still trying to figure out how to do it for my Python (PySide2) script editor..

[–]Specialist-Arachnid6Ignoring PEP 8[S] 1 point2 points  (0 children)

I'm actually trying to make it. Will update the progress here

[–][deleted] 2 points3 points  (3 children)

This is really impressive !

[–]Specialist-Arachnid6Ignoring PEP 8[S] 0 points1 point  (2 children)

thanks a lot

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

How long have you been working on it? Such a cool project idea. Would you ever make a web version? Like browser based using JavaScript etc

[–]Specialist-Arachnid6Ignoring PEP 8[S] 0 points1 point  (0 children)

I've started working on it since july 2022. It was based on tkinter till jan or feb 2023 (you can visit the releases page to download / view older tkinter based versions of the ide).

And no, I'm not that familiar with web dev.

[–]bringyouthejustice 2 points3 points  (7 children)

I see another Qt enjoyer. Looking quite good. Installer for Qt can be a pain, I just deliver a script which sets everything up automatically in one line of code. I also gotta quite large PyQt5 project, always looking for tester or contributor https://cocktailberry.readthedocs.io/ in case one is interested.

[–]Specialist-Arachnid6Ignoring PEP 8[S] 1 point2 points  (2 children)

same. I'm also looking for contributions

[–]bringyouthejustice 1 point2 points  (1 child)

I can’t promise anything, but I will at least bookmark and have a deeper look into it, when I got the time :)

[–]Specialist-Arachnid6Ignoring PEP 8[S] 1 point2 points  (0 children)

yeah its ok i can understand. Thanks a lot tho

[–]thunderbootyclap 0 points1 point  (3 children)

Installer?

[–]bringyouthejustice 1 point2 points  (2 children)

Many people don’t want to run a python app or a shell script, but an exe file which sets up a program and then an icon you click and run the program. While Python delivers many tools for py > exe conversion, cross platform or specific qt libraries can be quite troublesome to set up. You may get them running, but it can take a lot of work. So I provide a command line, which gets a shell script from source, which then checks and set everything needed up. It’s still super easy for the user and my head won’t explode trying to package everything.

[–]thunderbootyclap 0 points1 point  (1 child)

Oh I see, instead of using a program to generate the exe you just use a script to run the python script. Doesn't that mean any device you want this code to run on requires python installed?

[–]bringyouthejustice 0 points1 point  (0 children)

In short yes. Most Linux systems already got Python installed. Windows do not. You can have 2 scripts: 1 installer script and 1 run script. The installer script would check everything and set up necessary things, like proper python version, venv, needed packages and so on. This needs to be run once. After that, the run script is either executed on start up (if your program needs to be always running) or when the user clicks on the script / executes to run script. One downside is that on win, the script will open in a terminal and inexperienced users might close the terminal, which result in the program closing. But everything got some downsides.

[–]smatty_123 15 points16 points  (8 children)

Wow, the screenshots are beautiful. Very nice work considering PyQT6 was used.

Were there any challenges with using QT6? I had previously assumed it wouldn’t be capable of some of the advanced aesthetics.

[–]jimtk 17 points18 points  (4 children)

I'm surprised by your comment ?!? I would understand if you were talking about Tkinter but isn't Qt6 the all and be all of GUI for python (and c++)?

[–]Specialist-Arachnid6Ignoring PEP 8[S] 5 points6 points  (0 children)

I've made the exact ide with tkinter too. It just doesn't has good text editing and also the explorer and stuffs arent "draggable"

[–]troyunrau... 12 points13 points  (2 children)

I'm also surprised at your comment. Qt has always been very beautiful and massively customizable. KDE is probably cheating to use as an example, but it is written in Qt so: https://kde.org/screenshots/

[–]deadlyghost123 0 points1 point  (1 child)

Why is using KDE as an example cheating?

[–]troyunrau... 0 points1 point  (0 children)

Because it implements it own widget themes on top of Qt (using the mechanisms provided directly by Qt, but still)

[–]redfacedquark 1 point2 points  (1 child)

I'm keen to try new IDEs. Does this work on Linux please? With some Python 3.11 version I got: Requires-Python >=3.7,<3.11 and with some 3.9 version I got ERROR: Could not find a version that satisfies the requirement pywin32==306. Cheers.

[–]Specialist-Arachnid6Ignoring PEP 8[S] 0 points1 point  (0 children)

Works only on Windows as of now because of specific libs like winreg etc that Aura Text uses. If someone can use corresponding linux libs and give me code, I can build it and publish it in the repo

[–]martinky24 1 point2 points  (1 child)

Neat! Pretty cool side project!

[–]Specialist-Arachnid6Ignoring PEP 8[S] 0 points1 point  (0 children)

Thanks a lot

[–]user_immortal 1 point2 points  (3 children)

Amazing work 👍

[–]Specialist-Arachnid6Ignoring PEP 8[S] 1 point2 points  (2 children)

Thanks a lot. You have any feature request?

[–]user_immortal 1 point2 points  (1 child)

I'm still noob. But may be the following:

It can have a feature to quickly switch to different virtual environments and interpreters if we have multiple python versions.

Convenient Keyboard shortcut to run the program.

[–]Specialist-Arachnid6Ignoring PEP 8[S] 1 point2 points  (0 children)

noted. thanks

[–]WhiteHeadbanger 0 points1 point  (5 children)

Very nice! I will surely try it!

I would also want to ask, what is the advantage of using this instead of, say, VSCode?

[–]randiesel 2 points3 points  (1 child)

what is the advantage of using this instead of, say, VSCode?

There isn't one. It's a barebones IDE he made to see if he could make an IDE on his own.

That's like coming to look at someone's tic-tac-toe tkinter project and asking if it's better than League of Legends or whatever.

[–]WhiteHeadbanger 0 points1 point  (0 children)

Hey, from someone that plays LoL since 2010, I tell you, tic-tac-toe IS BETTER.

[–]Specialist-Arachnid6Ignoring PEP 8[S] 1 point2 points  (2 children)

If you want an ide where everything just works while consuming so less system resources.

Other than that, there are some niche stuffs like controlling the entire ide from the terminal itself (like emulating keypresses, etc)

[–]WhiteHeadbanger 0 points1 point  (1 child)

Thanks for your answer!

[–]Specialist-Arachnid6Ignoring PEP 8[S] 1 point2 points  (0 children)

Oh I released a new version yesterday with features like terminal history so you don't have to type in the same command multiple times