Hex-Rays' blog

IDA 7.4 and Python 3.8 – Hex Rays

Written by Igor Skochinsky | Jan 6, 2020

As several of our users have noticed, IDA 7.4 Windows installer refuses to use Python 3.8.0 if you installed it. You can usually observe output similar to following:

----------
Checking installs from "Python Software Foundation"
Checking "Python 3.8 (64-bit)" (3.8)
Found: "C:\Program Files\Python38\" (version: 3.8.0 ('38'))
Ignoring unusable Python 3.8.0
No Python installations were found
----------

So why exactly is 3.8.0 “unusable”? Well, it so happens that the 3.8.0 Windows release broke an API on which IDAPython relies so we decided to exclude it. This let us proceed but now with 3.8.1 release which fixed it two new issues have surfaced:

1. The 3.8.1 install is misdetected as 3.8.0 and thus is ignored. This is caused by the idapyswitch tool relying only on the file path for version detection. We have implemented more correct version checking that detects 3.8.1 properly and allows it to be selected. You can download the fixed version of idapyswitch here.

2. When trying to use PyQt, IDA crashes. Unfortunately, in Python 3.8 the layout of some internal structures has changed and SIP (the API bindings library used by PyQt) tries to access wrong data. Notably, this issue also affects Linux and Mac versions of IDAPython. If you are affected by this, you can download an updated build of the sip module below.