Closed cubetastic33 closed 6 years ago
@cubetastic33, TNoodle is written in Java, so it's not possible to run it in plain python. However, it is possible to use TNoodle through Jython! You can see us doing that in our .jy
tests: https://github.com/thewca/tnoodle/tree/master/scrambles/test.
@jfly cool! But, where are these imports from?
import tntdebug
from puzzle import TwoByTwoCubePuzzle from puzzle import NoInspectionThreeByThreeCubePuzzle from net.gnehzr.tnoodle.scrambles import AlgorithmBuilder
How do I install those modules (if required)?
tntdebug is here: https://github.com/thewca/tnoodle/blob/master/tntdebug.py
The other stuff is written in java. Jython let's you import java code, which is why this all works. You can find some more information about how exactly we invoke jython in this script: https://github.com/thewca/tnoodle/blob/master/jython.
@jfly ok, but how do I execute this code? Like from my terminal? If I try jython filename, it obviously didn't work
Yes, from your terminal. If you have trouble with that, I suggest looking at what Travis does to run the tests (see https://github.com/thewca/tnoodle/blob/4f8781e40f005b5dc8cc79cb99dd6991d12b2ca0/.travis.yml#L25).
@jfly I still don't understand. What command should I use?
Out of curiosity, what are you trying to do? I mean, generate scrambles? Are you writing a stand alone software?
@campos20 well, I am trying to generate scrambles on my Raspberry Pi 0 W, and show them on an lcd screen.
@jfly when I execute the command ./tmt make check
, it is giving a lot of logs, but how do I generate scrambles from a different python file? like, what function do I use?
@cubetastic33, I'd suggest reading our tests, it should be fairly obvious what's going on. Try taking a look at https://github.com/thewca/tnoodle/blob/master/scrambles/test/NoInspectionThreeByThreeTest.jy#L62.
@jfly When I finished running it, this is what it said:
BUILD FAILED
Total time: 11 mins 11.408 secs
Hit excepthook! stderr.isatty: True stdin.isatty: True stdout.isatty: True
Traceback (most recent call last):
File "./tmt", line 1220, in
/home/pi/Desktop/tnoodle/tnoodle-android/tmtproject.py(14)runGradleTask() -> assert retVal == 0
What's the "it" that you ran? Is that the entire output?
@jfly I ran ./tmt make check
again, and I got the following result:
$ ./tmt make check
svglite is up to date, not recompiling
utils is up to date, not recompiling
web-utils is up to date, not recompiling
winstone is up to date, not recompiling
quercus is up to date, not recompiling
hello-winstone is up to date, not recompiling
sq12phase is up to date, not recompiling
min2phase is up to date, not recompiling
threephase is up to date, not recompiling
scrambles is up to date, not recompiling
Failed to notify ProjectEvaluationListener.afterEvaluate(), but primary configuration failure takes precedence.
java.lang.RuntimeException: SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
at com.android.build.gradle.internal.SdkHandler.getAndCheckSdkFolder(SdkHandler.java:102)
at com.android.build.gradle.internal.SdkHandler.getSdkLoader(SdkHandler.java:112)
at com.android.build.gradle.internal.SdkHandler.initTarget(SdkHandler.java:86)
at com.android.build.gradle.BasePlugin.ensureTargetSetup(BasePlugin.java:673)
at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.java:610)
at com.android.build.gradle.BasePlugin$10$1.call(BasePlugin.java:566)
at com.android.build.gradle.BasePlugin$10$1.call(BasePlugin.java:563)
at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:55)
at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:47)
at com.android.build.gradle.BasePlugin$10.execute(BasePlugin.java:562)
at com.android.build.gradle.BasePlugin$10.execute(BasePlugin.java:559)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:93)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:82)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:44)
at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:79)
at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:30)
at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy12.afterEvaluate(Unknown Source)
at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:67)
at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:61)
at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:532)
at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:93)
at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:47)
at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35)
at org.gradle.initialization.DefaultGradleLauncher$2.run(DefaultGradleLauncher.java:125)
at org.gradle.internal.Factories$1.create(Factories.java:22)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:122)
at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:45)
at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51)
at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28)
at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43)
at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:170)
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
at org.gradle.launcher.Main.doAction(Main.java:33)
at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
FAILURE: Build failed with an exception.
* Where:
Build file '/home/pi/Desktop/tnoodle/tnoodle-android/library/build.gradle' line: 52
* What went wrong:
A problem occurred evaluating project ':library'.
> SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 3 mins 46.744 secs
Hit excepthook! stderr.isatty: True stdin.isatty: True stdout.isatty: True
Traceback (most recent call last):
File "./tmt", line 1220, in <module>
tmt._main()
File "./tmt", line 231, in _main
self.args.func()
File "./tmt", line 287, in _make
tmt._make(projectName=project.name, command='compile')
File "./tmt", line 293, in _make
commandFunc()
File "tnoodle-android/tmtproject.py", line 17, in compile
self.runGradleTask("assemble")
File "tnoodle-android/tmtproject.py", line 14, in runGradleTask
assert retVal == 0
AssertionError
> /home/pi/Desktop/tnoodle/tnoodle-android/tmtproject.py(14)runGradleTask()
-> assert retVal == 0
For anyone else following along, we continued this discussion over on https://github.com/thewca/tnoodle/issues/341, for some reason...
I want to use TNoodle in python. Is there any python version I could use? otherwise, is there any way to use the other code in python? Thanks!