Skip to content

Commit 0468a09

Browse files
committed
Load python dll on Windows
1 parent 37405fd commit 0468a09

File tree

1 file changed

+24
-3
lines changed

1 file changed

+24
-3
lines changed

src/main/scala/ai/kien/python/Python.scala

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)