Thursday, April 16, 2015

In which we learn I am full of it

A few days back I complained about QWebHistory, and how it didn't record clicks on local anchor links. I cannot figure out now why I said that. Because now I test it some more, I find that in fact, it does. I thought I had a solid case showing that it did not, but now... I don't know. I may be losing it, folks.

Anyway I coded back and forward key functions for the help viewer and they work just fine by calling the history's back() and forward() methods without any additional help from my code.

Further proving that I'm incompetent, I once again studied about rebase and merging in Scott Chacon's Pro Git, and also downloaded Github for Mac, because why be confused at the command line when you can be confused in a GUI? Anyway, then I set out to see if I could possibly merge the Python3 branch of Pyinstaller into the Develop branch.

Answer: probably not. Because if I use Github for Mac and start that merge, it shows me a list of 350 changes, the majority of which are shown with yellow status (conflicts to resolve) and many with red status (can't merge). And these are all over the many files of the project. So, no. So PyInstaller is definitely out for now -- and appears likely to never have Python3 support, at least for a long time, which makes me sad.

Meanwhile my request for advice to the cxfreeze mailing list has produced no responses of any kind. And R. Oussoren continues to not respond in any way to my very detailed debugging info on py2app.

I would like to just rant here about the absolutely abysmal state of Python3 distribution tools, but why bother? It is simply the case that it is not possible with Python3 and PyQt, to create a stand-alone, self-contained application, on any platform, period. If I had not elected to start PPQT2 in Python3, but just stayed with 2.7, I would be able to use PyInstaller at this point. But good grief, who would have thought 15 months ago, that there would be no Python3 bundlers working in 2015?

I am debating what to do next. One option is to just keep working, finish the program (writing the Translator interface that I've got a detailed spec for, and the two Translators I mean to supply) and just hope that during the 2 months that might take, somebody will get a bundler working.

Or, I could go on eLance or the like and try to hire somebody who could make pyqtdeploy work on all three platforms. But that could run into serious money. Based on my experiments, pyqtdeploy is a badly documented, flaky, and incomplete tool. Certainly making it work would require in-depth knowledge of not only Python and PyQt but QMake, Make, and the C++ interface between Python and Qt. It would be hard finding an eLancer with those skills in the first place.

Or, I've seriously thought about chucking the whole project. Who needs it?

Edit: So I took a walk and thought about what I'd written above, and one thing that stood out is the possibility that if I had written V2 in Python 2.7, stuff might be working, in particular PyInstaller and Py2app. So, how hard would it be to retrograde the code to Python 2 syntax? Probably not awfully hard, all the super() calls and probably a few subtle things I used without realizing they were 3-level syntax. But would it really help? So I decide what I will do tomorrow is to set up a virtual environment based on 2.7, with PyQt5 and all the other packages. In that VENV I will try bundling a couple of small test cases I have, not the whole app but just something that makes a main window with a widget in it. I'll have to do that at least on Mac OS and on Ubuntu, so several hours of work potentially, but at the end I'll know if there really exists a smooth path to bundling in the older language. And if so, then back-converting the whole app shouldn't take but a few days.

So at least that's something positive to try before I totally crumble.

No comments: