def checkPythonVersionFromCode(source_code): # There is a lot of cases to consider, pylint: disable=too-many-branches shebang = getShebangFromSource(source_code) if shebang is not None: binary, _args = parseShebang(shebang) if getOS() != "Windows": try: if os.path.samefile(sys.executable, binary): return True except OSError: # Might not exist pass basename = os.path.basename(binary) # Not sure if we should do that. if basename == "python": result = python_version < 0x300 elif basename == "python3": result = python_version > 0x300 elif basename == "python2": result = python_version < 0x300 elif basename == "python2.7": result = python_version < 0x300 elif basename == "python2.6": result = python_version < 0x270 elif basename == "python3.2": result = 0x330 > python_version >= 0x300 elif basename == "python3.3": result = 0x340 > python_version >= 0x330 elif basename == "python3.4": result = 0x350 > python_version >= 0x340 elif basename == "python3.5": result = 0x360 > python_version >= 0x350 elif basename == "python3.6": result = 0x370 > python_version >= 0x360 elif basename == "python3.7": result = 0x380 > python_version >= 0x370 elif basename == "python3.8": result = 0x390 > python_version >= 0x380 elif basename == "python3.9": result = 0x3A0 > python_version >= 0x390 else: result = None if result is False: general.sysexit("""\ The program you compiled wants to be run with: %s. Nuitka is currently running with Python version '%s', which seems to not match that. Nuitka cannot guess the Python version of your source code. You therefore might want to specify: '%s -m nuitka'. That will make use the correct Python version for Nuitka. """ % (shebang, python_version_str, binary))
def checkPythonVersionFromCode(source_code): # There is a lot of cases to consider, pylint: disable=too-many-branches shebang = getShebangFromSource(source_code) if shebang is not None: binary, _args = parseShebang(shebang) if getOS() != "Windows": try: if os.path.samefile(sys.executable, binary): return True except OSError: # Might not exist pass basename = os.path.basename(binary) # Not sure if we should do that. if basename == "python": result = python_version < 300 elif basename == "python3": result = python_version > 300 elif basename == "python2": result = python_version < 300 elif basename == "python2.7": result = python_version < 300 elif basename == "python2.6": result = python_version < 270 elif basename == "python3.2": result = 330 > python_version >= 300 elif basename == "python3.3": result = 340 > python_version >= 330 elif basename == "python3.4": result = 350 > python_version >= 340 elif basename == "python3.5": result = 360 > python_version >= 350 elif basename == "python3.6": result = 370 > python_version >= 360 else: result = None if result is False: sys.exit( """\ The program you compiled wants to be run with: %s. Nuitka is currently running with Python version '%s', which seems to not match that. Nuitka cannot guess the Python version of your source code. You therefore might want to specify: '%s -m nuitka'. That will make use the correct Python version for Nuitka. """ % (shebang, python_version_str, binary) )
def checkPythonVersionFromCode(source_code): # There is a lot of cases to consider, pylint: disable=R0912 shebang = getShebangFromSource(source_code) if shebang is not None: binary, _args = parseShebang(shebang) if getOS() != "Windows": try: if os.path.samefile(sys.executable, binary): return True except OSError: # Might not exist pass basename = os.path.basename(binary) # Not sure if we should do that. if basename == "python": result = python_version < 300 elif basename == "python3": result = python_version > 300 elif basename == "python2": result = python_version < 300 elif basename == "python2.7": result = python_version < 300 elif basename == "python2.6": result = python_version < 270 elif basename == "python3.2": result = python_version < 330 and python_version >= 300 elif basename == "python3.3": result = python_version < 340 and python_version >= 330 elif basename == "python3.4": result = python_version < 350 and python_version >= 340 elif basename == "python3.5": result = python_version < 360 and python_version >= 350 elif basename == "python3.6": result = python_version < 370 and python_version >= 360 else: result = None if result is False and Options.getIntendedPythonVersion() is None: sys.exit("""\ The program you compiled wants to be run with: %s. Nuitka is currently running with Python version '%s', which seems to not match that. Nuitka cannot guess the Python version of your source code. You therefore might want to specify '--python-version=' to make it clear. """ % (shebang, python_version_str))