Comments (33)
As of v1.33 you can do:
(py/initialize! :python-executable "/path/to/executable")
and
(py/initialize! :python-executable "/path/to/virtenv/bin/python")
I haven't tested this with pipenv yet. Could you try this and let me know if it works? If not I'll change this issue to "make py/initialize! work with pipenv", if that's alright with you :)
Thank you!
from libpython-clj.
I should also point out that py/initialize!
needs to be called BEFORE you require
[libpython-clj.require :refer [require-python]]
. Typically what I do is I will make a separate file like this:
(ns project.python
(:require [libpython-clj.python :as py]))
(py/initialize :python-executable "/path/to/my/env/bin/python")
and then in my main namespace
(ns project.core
(:require project.python
[libpython-clj.python :as py :refer [py. py.- py.. py* py**]]
[libpython-clj.require :refer [require-python import-python]]))
(do-fun-stuff!)
from libpython-clj.
Within the pipenv shell
it errors out earlier than the py
namespace:
$ pipenv shell
Launching subshell in virtual environment…
The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash-3.2$ . /Users/aaelony/.local/share/virtualenvs/libpython-clj-examples-b-Zokxgy/bin/activate
(libpython-clj-examples) bash-3.2$ which python
/Users/aaelony/.local/share/virtualenvs/libpython-clj-examples-b-Zokxgy/bin/python
(libpython-clj-examples) bash-3.2$
(libpython-clj-examples) bash-3.2$ clj
Clojure 1.10.1
user=>
user=> (ns gigasquid.seaborn
(:require [libpython-clj.require :refer [require-python]]
[libpython-clj.python :as py :refer [py. py.. py.-]]
[gigasquid.plot :as plot]))
Jan 29, 2020 2:56:47 PM clojure.tools.logging$eval498$fn__501 invoke
INFO: Executing python initialize with options:{:python-executable nil, :program-name nil, :python-home nil, :library-path nil}
Jan 29, 2020 2:56:47 PM clojure.tools.logging$eval498$fn__501 invoke
INFO: Detecting startup-info for Python executable:
Jan 29, 2020 2:56:47 PM clojure.tools.logging$eval498$fn__501 invoke
INFO: Startup info detected: {:python-home "/Users/aaelony/.local/share/virtualenvs/libpython-clj-examples-b-Zokxgy/bin/..", :lib-version "3.8", :libname "python3.8m", :java-library-path-addendum "/Users/aaelony/.local/share/virtualenvs/libpython-clj-examples-b-Zokxgy/bin/../lib"}
Jan 29, 2020 2:56:47 PM clojure.tools.logging$eval498$fn__501 invoke
INFO: Setting java library path: /Users/aaelony/.local/share/virtualenvs/libpython-clj-examples-b-Zokxgy/bin/../lib:/Users/aaelony/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
Jan 29, 2020 2:56:47 PM clojure.tools.logging$eval498$fn__501 invoke
INFO: Reference thread starting
Syntax error (ExceptionInfo) compiling at (libpython_clj/metadata.clj:13:1).
Failed to load library
gigasquid.seaborn=>
from libpython-clj.
yeah - it fails early:
$ pipenv shell
Launching subshell in virtual environment…
The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash-3.2$ . /Users/aaelony/.local/share/virtualenvs/libpython-clj-examples-b-Zokxgy/bin/activate
(libpython-clj-examples) bash-3.2$ which python
/Users/aaelony/.local/share/virtualenvs/libpython-clj-examples-b-Zokxgy/bin/python
(libpython-clj-examples) bash-3.2$ clj
Clojure 1.10.1
user=> (ns project.python
(:require [libpython-clj.python :as py]))
nil
project.python=> (py/initialize! :python-executable
"/Users/aaelony/.local/share/virtualenvs/libpython-clj-examples-b-Zokxgy/bin/python")
Jan 29, 2020 3:02:41 PM clojure.tools.logging$eval492$fn__495 invoke
INFO: Executing python initialize with options:{:python-executable "/Users/aaelony/.local/share/virtualenvs/libpython-clj-examples-b-Zokxgy/bin/python", :program-name nil, :python-home nil, :library-path nil}
Jan 29, 2020 3:02:41 PM clojure.tools.logging$eval492$fn__495 invoke
INFO: Detecting startup-info for Python executable: /Users/aaelony/.local/share/virtualenvs/libpython-clj-examples-b-Zokxgy/bin/python
Jan 29, 2020 3:02:41 PM clojure.tools.logging$eval492$fn__495 invoke
INFO: Startup info detected: {:python-home "/Users/aaelony/.local/share/virtualenvs/libpython-clj-examples-b-Zokxgy/bin/..", :lib-version "3.8", :libname "python3.8m", :java-library-path-addendum "/Users/aaelony/.local/share/virtualenvs/libpython-clj-examples-b-Zokxgy/bin/../lib"}
Jan 29, 2020 3:02:41 PM clojure.tools.logging$eval492$fn__495 invoke
INFO: Setting java library path: /Users/aaelony/.local/share/virtualenvs/libpython-clj-examples-b-Zokxgy/bin/../lib:/Users/aaelony/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
Jan 29, 2020 3:02:41 PM clojure.tools.logging$eval492$fn__495 invoke
INFO: Reference thread starting
Execution error (ExceptionInfo) at tech.jna.base/do-load-library (base.clj:158).
Failed to load library
project.python=>
from libpython-clj.
Okay, thank you! I'm attempting to reproduce the issue locally.
from libpython-clj.
cool, thank-you!!
from libpython-clj.
Okay here's what I setup.
setup
clj -A:new app pipenv.test
cd pipenv.test
python3.7 -m pipenv --python 3.7
python3.7 -m pipenv --venv # to get location of venv
python3.7 -m pipenv install seaborn
deps.edn
{:paths ["resources" "src"]
:deps {org.clojure/clojure {:mvn/version "RELEASE"}
cnuernber/libpython-clj {:mvn/version "1.33"}}
:aliases
{:test {:extra-paths ["test"]
:extra-deps {org.clojure/test.check {:mvn/version "RELEASE"}
}}
:runner
{:extra-deps {com.cognitect/test-runner
{:git/url "https://github.com/cognitect-labs/test-runner"
:sha "76568540e7f40268ad2b646110f237a60295fa3c"}}
:main-opts ["-m" "cognitect.test-runner"
"-d" "test"]}}}
test.clj
this is where I import Python
Use output of python3.7 -m pipenv --venv
as location (plus /bin/python
)
(ns pipenv.test
(:require [libpython-clj.python :as py]))
;; replace this with your output from `python3.7 -m pipenv --venv` and then "/bin/python"
(py/initialize! :python-executable "/home/jay/.local/share/virtualenvs/pipenv.test-Rx3tymi4/bin/python")
Code
(ns pipenv.core
(:require
pipenv.test
[libpython-clj.python :as py :refer [py. py.- py.. py* py**]]
[libpython-clj.require :refer [require-python import-python]]))
(require-python '[seaborn :as sns])
(require-python '[matplotlib.pyplot :as pyplot])
(comment
(sns/set)
(def dots (sns/load_dataset "dots")))
This worked for me. Try following these steps and see if the issue persists.
from libpython-clj.
Oh, I should also mention, don't use pipenv shell
. That's not necessary. Might even break something.
Want to emphasize, this is the critical step:
(ns pipenv.test
(:require [libpython-clj.python :as py]))
;; replace this with your output from `python3.7 -m pipenv --venv` and then "/bin/python"
(py/initialize! :python-executable "/home/jay/.local/share/virtualenvs/pipenv.test-Rx3tymi4/bin/python")
This needs to be called BEFORE (:require [libpython-clj.require :refer [require-python]])
is imported or it will probably not find the python executable you want
from libpython-clj.
getting closer...
I get:
(ns pipenv.test
(:require [libpython-clj.python :as py]
[clojure.java.shell :only [sh]]))
(clojure.java.shell/sh "python3.7" "-m pipenv --venv") => {:exit 1, :out "", :err "/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7: No module named pipenv --venv\n"}
from libpython-clj.
doing this first:
pip install seaborn
Creating a virtualenv for this project…
Pipfile: /Users/aaelony/aa/git/github/pipenv.test/Pipfile
Using /usr/local/Cellar/pipenv/2018.11.26_3/libexec/bin/python3.8 (3.8.1) to create virtualenv…
⠼ Creating virtual environment...Already using interpreter /usr/local/Cellar/pipenv/2018.11.26_3/libexec/bin/python3.8
Using real prefix '/usr/local/Cellar/[email protected]/3.8.1/Frameworks/Python.framework/Versions/3.8'
New python executable in /Users/aaelony/.local/share/virtualenvs/pipenv.test-QmYINU7y/bin/python3.8
Also creating executable in /Users/aaelony/.local/share/virtualenvs/pipenv.test-QmYINU7y/bin/python
Installing setuptools, pip, wheel...
done.
✔ Successfully created virtual environment!
Virtualenv location: /Users/aaelony/.local/share/virtualenvs/pipenv.test-QmYINU7y
Creating a Pipfile for this project…
Installing seaborn…
Adding seaborn to Pipfile's [packages]…
✔ Installation Succeeded
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✔ Success!
Updated Pipfile.lock (fb2b7d)!
Installing dependencies from Pipfile.lock (fb2b7d)…
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 11/11 — 00:00:02
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
from libpython-clj.
If you're going that route make sure to split on whitespace in clojure.java.shell/sh
. Check the example: https://clojuredocs.org/clojure.java.shell/sh#example-542692d6c026201cdc3270ea
You could also do it the stone age way and and just copy/paste from the shell! :P
from libpython-clj.
(clojure.java.shell/sh "python3.7" "-m" "pipenv" "--venv")
from libpython-clj.
from the shell I get the same thing:
$ python3.7 -m pipenv --venv
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7: No module named pipenv
from libpython-clj.
Try pipenv --venv
instead of python3.7 -m pipenv --venv
. Might be different depending on how you installed pipenv. I had to install it with pip
since I'm on Ubuntu and don't have brew :O
from libpython-clj.
pipenv --venv
works!
or
(ns pipenv.test
(:require [libpython-clj.python :as py]
[clojure.java.shell :only [sh]]
[clojure.string :as str]))
(def venv (-> "pipenv" (clojure.java.shell/sh "--venv") :out str/trim-newline))
venv
Unfortunately though:
(py/initialize! :python-executable venv)
gives
Show: Project-Only All
Hide: Clojure Java REPL Tooling Duplicates (11 frames hidden)
2. Unhandled java.io.IOException
1. Caused by java.io.IOException
error=13, Permission denied
ProcessImpl.java: -2 java.lang.ProcessImpl/forkAndExec
ProcessImpl.java: 340 java.lang.ProcessImpl/<init>
ProcessImpl.java: 271 java.lang.ProcessImpl/start
ProcessBuilder.java: 1107 java.lang.ProcessBuilder/start
Runtime.java: 591 java.lang.Runtime/exec
shell.clj: 113 clojure.java.shell/sh
shell.clj: 79 clojure.java.shell/sh
RestFn.java: 436 clojure.lang.RestFn/invoke
interpreter.clj: 31 libpython-clj.python.interpreter/python-system-data
interpreter.clj: 29 libpython-clj.python.interpreter/python-system-data
interpreter.clj: 75 libpython-clj.python.interpreter/python-system-info
interpreter.clj: 43 libpython-clj.python.interpreter/python-system-info
interpreter.clj: 151 libpython-clj.python.interpreter/detect-startup-info
interpreter.clj: 145 libpython-clj.python.interpreter/detect-startup-info
interpreter.clj: 416 libpython-clj.python.interpreter/initialize!
interpreter.clj: 408 libpython-clj.python.interpreter/initialize!
RestFn.java: 619 clojure.lang.RestFn/invoke
python.clj: 242 libpython-clj.python/initialize!
python.clj: 229 libpython-clj.python/initialize!
RestFn.java: 421 clojure.lang.RestFn/invoke
REPL: 11 pipenv.test/eval34938
core.clj: 3214 clojure.core/eval
core.clj: 3210 clojure.core/eval
main.clj: 437 clojure.main/repl/read-eval-print/fn
main.clj: 458 clojure.main/repl/fn
main.clj: 368 clojure.main/repl
RestFn.java: 1523 clojure.lang.RestFn/invoke
AFn.java: 22 clojure.lang.AFn/run
AFn.java: 22 clojure.lang.AFn/run
Thread.java: 834 java.lang.Thread/run
Unclear how to unlock... perhaps chmod ?
from libpython-clj.
try
(def venv (-> "pipenv" (clojure.java.shell/sh "--venv") :out str/trim-newline (str "/bin/python"))
from libpython-clj.
same error :(
from libpython-clj.
what's the value of venv
after you do that?
from libpython-clj.
Tell you what, can you head over to https://clojurians.zulipchat.com/#narrow/stream/215609-libpython-clj-dev/topic/help-wanted ? Might be able to help you a little better there.
from libpython-clj.
there was a closing ")" missing..
on my system, I need to invoke python3
. Unfortunately, /usr/bin/python is python 2.7.
(def venv (-> "pipenv" (clojure.java.shell/sh "--venv") :out str/trim-newline (str "/bin/python3")))
;; venv => "/Users/aaelony/.local/share/virtualenvs/pipenv.test-QmYINU7y/bin/python3"
- Unhandled clojure.lang.ExceptionInfo
Failed to load library
{:libname "python3.6m",
:paths
[[:system ["python3.6m"]]
[:java-library-path
["/Users/aaelony/.local/share/virtualenvs/pipenv.test-QmYINU7y/bin/../lib/libpython3.6m.dylib"
"/Users/aaelony/Library/Java/Extensions/libpython3.6m.dylib"
"/Library/Java/Extensions/libpython3.6m.dylib"
"/Network/Library/Java/Extensions/libpython3.6m.dylib"
"/System/Library/Java/Extensions/libpython3.6m.dylib"
"/usr/lib/java/libpython3.6m.dylib"
"./libpython3.6m.dylib"]]]}
base.clj: 158 tech.jna.base/do-load-library
base.clj: 123 tech.jna.base/do-load-library
base.clj: 178 tech.jna.base/load-library
base.clj: 174 tech.jna.base/load-library
jna.clj: 87 tech.jna/load-library
jna.clj: 85 tech.jna/load-library
interpreter.clj: 404 libpython-clj.python.interpreter/setup-direct-mapping!
interpreter.clj: 402 libpython-clj.python.interpreter/setup-direct-mapping!
interpreter.clj: 441 libpython-clj.python.interpreter/initialize!
interpreter.clj: 408 libpython-clj.python.interpreter/initialize!
RestFn.java: 619 clojure.lang.RestFn/invoke
python.clj: 242 libpython-clj.python/initialize!
python.clj: 229 libpython-clj.python/initialize!
RestFn.java: 421 clojure.lang.RestFn/invoke
REPL: 21 pipenv.test/eval34964
core.clj: 3214 clojure.core/eval
core.clj: 3210 clojure.core/eval
main.clj: 437 clojure.main/repl/read-eval-print/fn
main.clj: 458 clojure.main/repl/fn
main.clj: 368 clojure.main/repl
RestFn.java: 1523 clojure.lang.RestFn/invoke
AFn.java: 22 clojure.lang.AFn/run
AFn.java: 22 clojure.lang.AFn/run
Thread.java: 834 java.lang.Thread/run
from libpython-clj.
so from a fresh REPL
user=> (require '[libpython-clj.python :as py])
nil
user=> (py/initialize! :python-executable "/Users/aaelony/.local/share/virtualenvs/pipenv.test-QmYINU7y/bin/python3")
Give that a shot and see if it works
from libpython-clj.
We need the shared library produced when you install the virtual env.
Really what we need is an environments.md file under docs that describes that issue and this one and the fix (if Stuart's fix works for you).
from libpython-clj.
Not working just yet... getting Failed to load library
as error.
from libpython-clj.
Did you try with the suggested env variable when installing the env?
env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.6.9
Specifically, where is the python3.6m shared library on your system if you search?
from libpython-clj.
I think that is the issue. I need to set the env variable correctly. My system is literally litered with such libs.
/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/libpython3.7m.dylib
/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/config-3.7m-darwin/libpython3.7m.dylib
/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/libpython3.7m.dylib
/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/config-3.7m-darwin/libpython3.7m.dylib
/Library/Frameworks/Python.framework/Versions/3.7/lib/libpython3.7m.dylib
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/config-3.7m-darwin/libpython3.7m.dylib
/System/Volumes/Data/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/libpython3.7m.dylib
/System/Volumes/Data/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/config-3.7m-darwin/libpython3.7m.dylib
/System/Volumes/Data/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/libpython3.7m.dylib
/System/Volumes/Data/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/config-3.7m-darwin/libpython3.7m.dylib
/System/Volumes/Data/Library/Frameworks/Python.framework/Versions/3.7/lib/libpython3.7m.dylib
/System/Volumes/Data/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/config-3.7m-darwin/libpython3.7m.dylib
/System/Volumes/Data/Users/aaelony/python/miniconda3/pkgs/python-3.7.4-h359304d_1/lib/libpython3.7m.dylib
/System/Volumes/Data/Users/aaelony/python/miniconda3/lib/libpython3.7m.dylib
/Users/aaelony/python/miniconda3/pkgs/python-3.7.4-h359304d_1/lib/libpython3.7m.dylib
/Users/aaelony/python/miniconda3/lib/libpython3.7m.dylib
Unfamiliar with a good way to housekeep, hence the need for sandboxing.
from libpython-clj.
This is why I recommend using docker. We have a clear example of how to use docker including mounting your local project here. Essentially docker is the most sandboxed you can get :-).
from libpython-clj.
Totally. I'll look into the facial-rec example you provided.
from libpython-clj.
I'm trying to determine if py/initialize!
is what is crashing or if the require-python
is causing the issue. I'm not sure where the Failed to load library
message is coming from -- I don't think that originates directly from libpython-clj
.
Also I wonder if this is a Mac specific issue or there's just some local environment stuff going on. I managed to get pipenv working on Ubuntu. If I get some time I'll test on a Mac and see if it comes up there.
from libpython-clj.
Here is the current state of progress:
$ clj
Clojure 1.10.1
(ns pipenv.test
(:require [libpython-clj.python :as py]
[clojure.java.shell :only [sh]]
[clojure.string :as str]))
nil
pipenv.test=>
pipenv.test=> (def venv (-> "pipenv" (clojure.java.shell/sh "--venv") :out str/trim-newline (str "/bin/python3")))
#'pipenv.test/venv
pipenv.test=>
pipenv.test=> venv
"/Users/aaelony/.local/share/virtualenvs/pipenv.test-QmYINU7y/bin/python3"
pipenv.test=> (py/initialize! :python-executable venv)
Jan 30, 2020 11:03:15 AM clojure.tools.logging$eval492$fn__495 invoke
INFO: Executing python initialize with options:{:python-executable "/Users/aaelony/.local/share/virtualenvs/pipenv.test-QmYINU7y/bin/python3", :program-name nil, :python-home nil, :library-path nil}
Jan 30, 2020 11:03:15 AM clojure.tools.logging$eval492$fn__495 invoke
INFO: Detecting startup-info for Python executable: /Users/aaelony/.local/share/virtualenvs/pipenv.test-QmYINU7y/bin/python3
Jan 30, 2020 11:03:16 AM clojure.tools.logging$eval492$fn__495 invoke
INFO: Startup info detected: {:python-home "/Users/aaelony/.local/share/virtualenvs/pipenv.test-QmYINU7y/bin/..", :lib-version "3.8", :libname "python3.8m", :java-library-path-addendum "/Users/aaelony/.local/share/virtualenvs/pipenv.test-QmYINU7y/bin/../lib"}
Jan 30, 2020 11:03:16 AM clojure.tools.logging$eval492$fn__495 invoke
INFO: Setting java library path: /Users/aaelony/.local/share/virtualenvs/pipenv.test-QmYINU7y/bin/../lib:/Users/aaelony/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
Jan 30, 2020 11:03:16 AM clojure.tools.logging$eval492$fn__495 invoke
INFO: Reference thread starting
Execution error (ExceptionInfo) at tech.jna.base/do-load-library (base.clj:158).
Failed to load library
from libpython-clj.
I haven't tested on Python 3.8 yet. I'll see if I can give that a shot.
from libpython-clj.
@aaelony - does libpython3.8m.dylib
exist at :java-library-path-addendum "/Users/aaelony/.local/share/virtualenvs/pipenv.test-QmYINU7y/bin/../lib"
?
If not, then my question is was the env installed with
env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.8
The system thinks that the python shared library is installed at the above location.
from libpython-clj.
That was my thought too @aaelony - it kinda looks like this issue #61
from libpython-clj.
@cnuernber recommend closing. Tested that pipenv works for Ubuntu (see details above). If it doesn't work for Mac that would be a separate issue. @aaelony if you're continuing to experience problems please visit out help-wanted topic and we'll continue to assist until you get it!
from libpython-clj.
Related Issues (20)
- Cannot run the example in the tutorial in Cider with JDK 17 HOT 8
- process hanging in embeded mode on exception HOT 2
- from-import does not support "string"
- newbie: I get: `dir already refers to: #'clojure.repl/dir in namespace: user` HOT 2
- Newbie: Lein Clojure Windows Anaconda VSCode Cava REPL Returns (NoClassDefFoundError) HOT 5
- Create Python Module then Import Module and Call Function Inside Clojure? HOT 4
- Fix ubuntu version in dockerfiles HOT 6
- Consider releasing returned values from instance fns
- JDK-20 support HOT 3
- builtins/eval throws 'frame does not exist' HOT 2
- Unable to require libraries from within docker using conda HOT 6
- Failed to find a valid python library on MS-Windows with the official python distributions
- Extend CI coverage to all the mainstream architectures
- require-python missing functions with annotation HOT 3
- Make polyglot development easier by allow require-python to be path-informed HOT 1
- Data transformation pipelines? HOT 1
- NSWindow main thread error when trying to setup Gymnasium (openapi gym) HOT 5
- JVM crashes when requiring `libpython-clj2.require` on 64bit Raspberry Pi 4 HOT 1
- error of unhashable type HOT 15
- Ways to reduce probability of memory leaks? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from libpython-clj.