Closed rkirchofer closed 2 years ago
James asked a valid question. Closing this until further discussion.
Hey, sorry for not providing context.
src/bridge.clj
(ns bridge
(:require [libpython-clj2.python
:as py
:refer [as-python as-jvm
->python ->jvm
get-attr call-attr call-attr-kw
get-item initialize!
run-simple-string
add-module module-dict
import-module
python-type]]
[libpython-clj2.require :refer [require-python]]
[libpython-clj2.codegen :as codegen]))
(defonce initialize (initialize!))
(require-python 'sys)
(py/call-attr (py/get-attr sys "path") "append" "/Users/rkirchofer/myproject")
exception
Show: Project-Only All
Hide: Clojure Java REPL Tooling Duplicates (30 frames hidden)
2. Unhandled clojure.lang.Compiler$CompilerException
Error compiling src/bridge.clj at (19:15)
#:clojure.error{:phase :compile-syntax-check,
:line 19,
:column 15,
:source "/Users/rkirchofer/work/code/py-clj/src/bridge.clj"}
Compiler.java: 6812 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 3892 clojure.lang.Compiler$InvokeExpr/parse
Compiler.java: 7113 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 3892 clojure.lang.Compiler$InvokeExpr/parse
Compiler.java: 7113 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 6124 clojure.lang.Compiler$BodyExpr$Parser/parse
Compiler.java: 5471 clojure.lang.Compiler$FnMethod/parse
Compiler.java: 4033 clojure.lang.Compiler$FnExpr/parse
Compiler.java: 7109 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7178 clojure.lang.Compiler/eval
Compiler.java: 7136 clojure.lang.Compiler/eval
core.clj: 3202 clojure.core/eval
core.clj: 3198 clojure.core/eval
interruptible_eval.clj: 87 nrepl.middleware.interruptible-eval/evaluate/fn/fn
AFn.java: 152 clojure.lang.AFn/applyToHelper
AFn.java: 144 clojure.lang.AFn/applyTo
core.clj: 667 clojure.core/apply
core.clj: 1977 clojure.core/with-bindings*
core.clj: 1977 clojure.core/with-bindings*
RestFn.java: 425 clojure.lang.RestFn/invoke
interruptible_eval.clj: 87 nrepl.middleware.interruptible-eval/evaluate/fn
main.clj: 437 clojure.main/repl/read-eval-print/fn
main.clj: 437 clojure.main/repl/read-eval-print
main.clj: 458 clojure.main/repl/fn
main.clj: 458 clojure.main/repl
main.clj: 368 clojure.main/repl
RestFn.java: 1523 clojure.lang.RestFn/invoke
interruptible_eval.clj: 84 nrepl.middleware.interruptible-eval/evaluate
interruptible_eval.clj: 56 nrepl.middleware.interruptible-eval/evaluate
interruptible_eval.clj: 152 nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
AFn.java: 22 clojure.lang.AFn/run
session.clj: 218 nrepl.middleware.session/session-exec/main-loop/fn
session.clj: 217 nrepl.middleware.session/session-exec/main-loop
AFn.java: 22 clojure.lang.AFn/run
Thread.java: 834 java.lang.Thread/run
1. Caused by java.lang.RuntimeException
Unable to resolve symbol: sys in this context
Util.java: 221 clojure.lang.Util/runtimeException
Compiler.java: 7418 clojure.lang.Compiler/resolveIn
Compiler.java: 7362 clojure.lang.Compiler/resolve
Compiler.java: 7323 clojure.lang.Compiler/analyzeSymbol
Compiler.java: 6772 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 3892 clojure.lang.Compiler$InvokeExpr/parse
Compiler.java: 7113 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 3892 clojure.lang.Compiler$InvokeExpr/parse
Compiler.java: 7113 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 6124 clojure.lang.Compiler$BodyExpr$Parser/parse
Compiler.java: 5471 clojure.lang.Compiler$FnMethod/parse
Compiler.java: 4033 clojure.lang.Compiler$FnExpr/parse
Compiler.java: 7109 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7178 clojure.lang.Compiler/eval
Compiler.java: 7136 clojure.lang.Compiler/eval
core.clj: 3202 clojure.core/eval
core.clj: 3198 clojure.core/eval
interruptible_eval.clj: 87 nrepl.middleware.interruptible-eval/evaluate/fn/fn
AFn.java: 152 clojure.lang.AFn/applyToHelper
AFn.java: 144 clojure.lang.AFn/applyTo
core.clj: 667 clojure.core/apply
core.clj: 1977 clojure.core/with-bindings*
core.clj: 1977 clojure.core/with-bindings*
RestFn.java: 425 clojure.lang.RestFn/invoke
interruptible_eval.clj: 87 nrepl.middleware.interruptible-eval/evaluate/fn
main.clj: 437 clojure.main/repl/read-eval-print/fn
main.clj: 437 clojure.main/repl/read-eval-print
main.clj: 458 clojure.main/repl/fn
main.clj: 458 clojure.main/repl
main.clj: 368 clojure.main/repl
RestFn.java: 1523 clojure.lang.RestFn/invoke
interruptible_eval.clj: 84 nrepl.middleware.interruptible-eval/evaluate
interruptible_eval.clj: 56 nrepl.middleware.interruptible-eval/evaluate
interruptible_eval.clj: 152 nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
AFn.java: 22 clojure.lang.AFn/run
session.clj: 218 nrepl.middleware.session/session-exec/main-loop/fn
session.clj: 217 nrepl.middleware.session/session-exec/main-loop
AFn.java: 22 clojure.lang.AFn/run
Thread.java: 834 java.lang.Thread/run
project.clj
(defproject py-clj "0.0.1"
:dependencies [[clj-python/libpython-clj "2.018"]
[cnuernber/dtype-next "9.012"]
[net.java.dev.jna/jna "5.10.0"]]
:jvm-opts ["-Dforeign.restricted=permit"
"--add-opens" "java.base/java.lang=ALL-UNNAMED"
"-Djava.library.path=/usr/lib/x86_64-linux-gnu"])
$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
OK - require-python is designed to create a clojure namespace after the name of the module. So you have a sys namespace and the sys module is actually a special variable in that namespace.
I think for this exact use case just using (def sys (py/import-module "sys"))
and not using require-python is going to be a better pathway.
Ok, thanks.
Sorry, I’m not following. Is there an issue or conversation related to this PR?
On Fri, Feb 18, 2022 at 12:20 PM Richie Kirchofer @.***> wrote: