Jozsefs-MacBook-Pro:scalapytest joco$ sbt
[info] Loading global plugins from /Users/joco/.sbt/1.0/plugins
[info] Loading project definition from /Users/joco/dev/ml/scalapy/test01/github/scalapytest/project
[info] Loading settings for project root from build.sbt ...
[info] Set current project to ScalaPyTest (in build file:/Users/joco/dev/ml/scalapy/test01/github/scalapytest/)
[info] sbt server started at local:///Users/joco/.sbt/1.0/server/3f6c4d00bf97ae0f90ba/sock
sbt:ScalaPyTest> run
[info] running (fork) example.Hello
[info] code runs
[error] Exception in thread "main" java.lang.Error: java.lang.UnsatisfiedLinkError: jep.MainInterpreter.initializePython([Ljava/lang/String;)V
[error] at jep.MainInterpreter.initialize(MainInterpreter.java:183)
[error] at jep.MainInterpreter.getMainInterpreter(MainInterpreter.java:97)
[error] at jep.Jep.<init>(Jep.java:232)
[error] at jep.Jep.<init>(Jep.java:228)
[error] at me.shadaj.scalapy.py.JepInterpreter.<init>(JepInterpreter.scala:9)
[error] at me.shadaj.scalapy.py.Platform$.newInterpreter(Platform.scala:5)
[error] at me.shadaj.scalapy.py.package$.interpreter(package.scala:11)
[error] at me.shadaj.scalapy.py.Writer$$anon$11.write(Writer.scala:75)
[error] at me.shadaj.scalapy.py.Any$.from(Any.scala:28)
[error] at example.Hello$.delayedEndpoint$example$Hello$1(Hello.scala:6)
[error] at example.Hello$delayedInit$body.apply(Hello.scala:3)
[error] at scala.Function0.apply$mcV$sp(Function0.scala:39)
[error] at scala.Function0.apply$mcV$sp$(Function0.scala:39)
[error] at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)
[error] at scala.App.$anonfun$main$1$adapted(App.scala:80)
[error] at scala.collection.immutable.List.foreach(List.scala:392)
[error] at scala.App.main(App.scala:80)
[error] at scala.App.main$(App.scala:78)
[error] at example.Hello$.main(Hello.scala:3)
[error] at example.Hello.main(Hello.scala)
[error] Caused by: java.lang.UnsatisfiedLinkError: jep.MainInterpreter.initializePython([Ljava/lang/String;)V
[error] at jep.MainInterpreter.initializePython(Native Method)
[error] at jep.MainInterpreter.access$100(MainInterpreter.java:64)
[error] at jep.MainInterpreter$1.run(MainInterpreter.java:140)
[error] Nonzero exit code returned from runner: 1
[error] (Compile / run) Nonzero exit code returned from runner: 1
[error] Total time: 1 s, completed Dec 24, 2019 11:51:02 PM
sbt:ScalaPyTest>
scalapy-core:0.3.0
, which is on Maven https://search.maven.org/artifact/me.shadaj/scalapy-core_2.12
[error] Multiple repositories are found:
[error] [meshadaj-1361] status:open, profile:me.shadaj(efba3c89dc27) description: Implicitly created (auto staging).
[error] [meshadaj-1362] status:open, profile:me.shadaj(efba3c89dc27) description: Implicitly created (auto staging).
[error] [meshadaj-1363] status:open, profile:me.shadaj(efba3c89dc27) description: Implicitly created (auto staging).
[error] [meshadaj-1364] status:open, profile:me.shadaj(efba3c89dc27) description: Implicitly created (auto staging).
[error] [meshadaj-1365] status:open, profile:me.shadaj(efba3c89dc27) description: Implicitly created (auto staging).
[error] [meshadaj-1366] status:open, profile:me.shadaj(efba3c89dc27) description: Implicitly created (auto staging).
[error] [meshadaj-1367] status:open, profile:me.shadaj(efba3c89dc27) description: Implicitly created (auto staging).
[error] [meshadaj-1368] status:open, profile:me.shadaj(efba3c89dc27) description: Implicitly created (auto staging).
[error] [meshadaj-1369] status:open, profile:me.shadaj(efba3c89dc27) description: Implicitly created (auto staging).
[error] [meshadaj-1370] status:open, profile:me.shadaj(efba3c89dc27) description: Implicitly created (auto staging).
[error] [meshadaj-1371] status:open, profile:me.shadaj(efba3c89dc27) description: Implicitly created (auto staging).
[error] [meshadaj-1372] status:open, profile:me.shadaj(efba3c89dc27) description: Implicitly created (auto staging).
[error] [meshadaj-1373] status:open, profile:me.shadaj(efba3c89dc27) description: Implicitly created (auto staging).
[error] Specify one of the repository ids in the command line
[error] java.lang.IllegalStateException: Found multiple staging repositories
[error] Use 'last' for the full log.
sbt-sonatype
could help
scalapy-numpy
cross building to 2.13 in this commit MaximeKjaer/scalapy-numpy@d8805dc but would need version 0.3.0+13-0c255e53
of ScalaPy on Maven in order to make builds reproducible
scalapy-tensorflow
module. This is just the easiest way that I found to augment the existing typings while working on tf-dotty. I would be happy to contribute them back to the main scalapy-tensorflow project, once I've typed a full TF module
Which jep
version should be used for 0.3.0+17-2bfe86de
? I tried both 3.8.2
and 3.9.0
and both result in following error:
[error] Native library (darwin/libpython3.7m.dylib) not found in resource path (/var/folders/lr/x_gb25v56fj3_80kyyk17lhc0000gn/T/sbt_dd5aa2c1/job-2/target/90ed79f3/562ee7c8/scala-python-example_2.12-1.0.jar:/var/folders/lr/x_gb25v56fj3_80kyyk17lhc0000gn/T/sbt_dd5aa2c1/target/567bf6c2/9e2a823f/jep-3.9.0.jar:/var/folders/lr/x_gb25v56fj3_80kyyk17lhc0000gn/T/sbt_dd5aa2c1/target/bc8bc145/464fe2e1/scala-library.jar:/var/folders/lr/x_gb25v56fj3_80kyyk17lhc0000gn/T/sbt_dd5aa2c1/target/aa0ecde6/28d0208b/scalapy-macros_2.12-0.3.0%2B17-2bfe86de.jar:/var/folders/lr/x_gb25v56fj3_80kyyk17lhc0000gn/T/sbt_dd5aa2c1/target/1a583173/abb78bc4/jna-5.4.0.jar:/var/folders/lr/x_gb25v56fj3_80kyyk17lhc0000gn/T/sbt_dd5aa2c1/target/26ba9c6e/34d55877/scalapy-core_2.12-0.3.0%2B17-2bfe86de.jar:/var/folders/lr/x_gb25v56fj3_80kyyk17lhc0000gn/T/sbt_dd5aa2c1/target/2ce76994/5a36165d/scala-reflect.jar)
[error] at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:302)
[error] at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:455)
[error] at com.sun.jna.Native.register(Native.java:1722)
[error] at com.sun.jna.Native.register(Native.java:1443)
[error] at me.shadaj.scalapy.py.CPythonAPIInterface.<init>(CPythonAPI.scala:6)
[error] at me.shadaj.scalapy.py.CPythonAPI$.<init>(CPythonAPI.scala:74)
[error] at me.shadaj.scalapy.py.CPythonAPI$.<clinit>(CPythonAPI.scala)
[error] at me.shadaj.scalapy.py.CPythonInterpreter$.<init>(CPythonInterpreter.scala:4)
[error] at me.shadaj.scalapy.py.CPythonInterpreter$.<clinit>(CPythonInterpreter.scala)
[error] at me.shadaj.scalapy.py.package$.<init>(package.scala:12)
[error] at me.shadaj.scalapy.py.package$.<clinit>(package.scala)
[error] at com.sushant.example.PiotrekExample$.delayedEndpoint$com$sushant$example$PiotrekExample$1(PiotrekExample.scala:13)
[error] at com.sushant.example.PiotrekExample$delayedInit$body.apply(PiotrekExample.scala:8)
[error] at scala.Function0.apply$mcV$sp(Function0.scala:39)
[error] at scala.Function0.apply$mcV$sp$(Function0.scala:39)
[error] at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)
[error] at scala.App.$anonfun$main$1$adapted(App.scala:80)
[error] at scala.collection.immutable.List.foreach(List.scala:392)
[error] at scala.App.main(App.scala:80)
[error] at scala.App.main$(App.scala:78)
[error] at com.sushant.example.PiotrekExample$.main(PiotrekExample.scala:8)
[error] at com.sushant.example.PiotrekExample.main(PiotrekExample.scala)
[error] Suppressed: java.lang.UnsatisfiedLinkError: dlopen(libpython3.7m.dylib, 9): image not found
[error] at com.sun.jna.Native.open(Native Method)
[error] at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:191)
[error] ... 21 more
The same code works with scalapy 0.3.0. Any idea what could be missing from my setup?
It fails on val tf = py.module("tensorflow")
Is there any example of a class which can be created by the user calling constructor directly? e.g.
@py.native class Conv2D(
filters: Int,
kernel_size: py.|[Int, (Int, Int)],
strides: py.|[Int, (Int, Int)] = (1, 1),
padding: String = "valid",
data_format: String = "channels_last",
dilation_rate: py.|[Int, (Int, Int)] = (1, 1),
activation: Option[String] = None,
use_bias: Boolean = true,
kernel_initializer: String = "glorot_uniform",
bias_initializer: String = "zeros",
kernel_regularizer: Option[String] = None,
bias_regularizer: Option[String] = None,
activity_regularizer: Option[String] = None,
kernel_constraint: Option[String] = None,
bias_constraint: Option[String] = None
) extends py.Object
I would like to be able to call it like Conv2D(32, kernel_size = (3, 3))
but I'm not sure how to provide PyValue
@shadaj Thanks, I will try it. Do you mean something like:
@py.native abstract class MyClass(x: String) extends py.Object
@py.native object MyClass extends py.Object {
def apply(x: String): MyClass = py.native
}
Although I need to provide Reader[MyClass]
and PyValue
for the object itself
I have some classes working if there is a single parameter (val value: PyValue
) but I have trouble to do it if there are more
@Avasil MyClass
would have to be a trait with x
being defined as a method inside. Right now, ScalaPy also doesn't support top-level objects as facades, so you would need to define a separate trait which contains the constructor which gets a bit messy. What I'd suggest is defining the constructor inside the facade for the containing module, similar to how https://github.com/shadaj/scalapy-tensorflow/blob/master/src/main/scala/me/shadaj/scalapy/tensorflow/TensorFlow.scala#L52 defines the constructor for Variable
.
This is not too elegant unfortunately, but improving this is my top priority after stabilizing the new interpreter backend so should improve soon!