@@ -19,7 +19,7 @@ class Python private[python] (
1919 * interpreter
2020 */
2121 lazy val nativeLibraryPaths : Try [Seq [String ]] =
22- callPython(Python .libPathCmd)
22+ callPython(if (isWin) Python .libPathCmdWin else Python .libPathCmd)
2323 .map(_.split(" ;" ))
2424 .map(_.map(_.trim).distinct.filter(_.nonEmpty).toSeq)
2525
@@ -91,6 +91,10 @@ class Python private[python] (
9191
9292 private val path : String = getEnv(" PATH" ).getOrElse(" " )
9393
94+ private lazy val isWin = isWindows.getOrElse(
95+ System .getProperty(" os.name" ).startsWith(" Windows" )
96+ )
97+
9498 private val pathSeparator =
9599 isWindows.map(if (_) " ;" else " :" ).getOrElse(File .pathSeparator)
96100
@@ -122,7 +126,9 @@ class Python private[python] (
122126 private def callPython (cmd : String ): Try [String ] =
123127 interp.flatMap(python => callProcess(Seq (python, " -c" , cmd)))
124128
125- private def ldversion : Try [String ] = callPython(Python .ldversionCmd)
129+ private def ldversion : Try [String ] = callPython(
130+ if (isWin) Python .ldversionCmdWin else Python .ldversionCmd
131+ )
126132
127133 private lazy val binDir =
128134 callPython(" import sys;print(sys.base_prefix)" )
@@ -197,10 +203,20 @@ object Python {
197203 |try:
198204 | abiflags = sys.abiflags
199205 |except AttributeError:
200- | abiflags = ''
206+ | abiflags = sysconfig.get_config_var('abiflags') or ''
201207 |print(sysconfig.get_python_version() + abiflags)
202208 """ .stripMargin
203209
210+ private def ldversionCmdWin =
211+ """ import sys
212+ |import sysconfig
213+ |try:
214+ | abiflags = sys.abiflags
215+ |except AttributeError:
216+ | abiflags = sysconfig.get_config_var('abiflags') or ''
217+ |print(''.join(map(str, sys.version_info[:2])) + abiflags)
218+ """ .stripMargin
219+
204220 private def libPathCmd =
205221 """ import sys
206222 |import os.path
@@ -209,4 +225,9 @@ object Python {
209225 |libpl = libpl + ';' if libpl is not None else ''
210226 |print(libpl + os.path.join(sys.base_prefix, 'lib'))
211227 """ .stripMargin
228+
229+ private def libPathCmdWin =
230+ """ import sys
231+ |print(sys.base_prefix)
232+ """ .stripMargin
212233}
0 commit comments