Software complexity and Python problems

Recent Python problems

For the last couple of years, we haven’t had that many problems that can be directly attributed to the Python project, but over the last couple of months this has changed.

A regression in string formatting

One of our Linux users, who have to do a lot more work than Windows or MacOS users to get ElectrumSV to work, pointed out that he couldn’t even create a wallet. Looking into this it turns out that the recently release of Python 3.8.6 introduced a regression where format strings no longer made use of the integer values but rather the descriptive name for an “IntFlag” enumeration value.

Packaging platform detection problems

I develop on Windows, so when I went to open a console window, I used the Developer Command Prompt for Visual Studio which is an enhanced version set up as an environment for easier development.

Dual architecture installation problems

So now I no longer open the Developer Command for Visual Studio unless I explicitly need it for a non-Python reason. This in theory should ensure that I do not get the corruption between one architecture trying to use things intended for another architecture.

Random pip errors

The packaging system for Python is called “pip”. You execute a rather standard installation command, which has much in common with similar packaging systems for Linux, and other programming languages.

Embedded Python release problems

One of the tasks on my plate is to come up with a new build system for Windows, and the first step is to package a standalone Python environment with ElectrumSV included, that runs as an ElectrumSV application. The standard way this is done is to either embed or extend Python. In our case we can embed if necessary.

The embedded builds for Python 3.9.

Summing up

Development relies on the work of others I don’t pay and whose efforts I use for free. These are the recent problems ElectrumSV has encountered using Python. Using other programming languages hasn’t exactly been a bed of roses either.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store