val libDir = file("$prefix/lib")
val version = run {
for (filename in libDir.list()!!) {
- """python(\d+\.\d+)""".toRegex().matchEntire(filename)?.let {
+ """python(\d+\.\d+[a-z]*)""".toRegex().matchEntire(filename)?.let {
return@run it.groupValues[1]
}
}
val libPythonDir = file("$libDir/python$pythonVersion")
val triplet = run {
for (filename in libPythonDir.list()!!) {
- """_sysconfigdata__android_(.+).py""".toRegex().matchEntire(filename)?.let {
- return@run it.groupValues[1]
- }
+ """_sysconfigdata_[a-z]*_android_(.+).py""".toRegex()
+ .matchEntire(filename)?.let {
+ return@run it.groupValues[1]
+ }
}
throw GradleException("Failed to find Python triplet in $libPythonDir")
}
"""create and manipulate C data types in Python"""
-import os as _os, sys as _sys
+import os as _os
+import sys as _sys
+import sysconfig as _sysconfig
import types as _types
__version__ = "1.1.0"
if _os.name == "nt":
pythonapi = PyDLL("python dll", None, _sys.dllhandle)
-elif _sys.platform == "android":
- pythonapi = PyDLL("libpython%d.%d.so" % _sys.version_info[:2])
-elif _sys.platform == "cygwin":
- pythonapi = PyDLL("libpython%d.%d.dll" % _sys.version_info[:2])
+elif _sys.platform in ["android", "cygwin"]:
+ # These are Unix-like platforms which use a dynamically-linked libpython.
+ pythonapi = PyDLL(_sysconfig.get_config_var("LDLIBRARY"))
else:
pythonapi = PyDLL(None)