Skip to main content

PyJulia

Project description

=======

|Build Status| |Build status|

Experimenting with developing a better interface to julia that works
with Python 2 & 3.

to run the tests, execute from the toplevel directory

.. code:: shell

python -m unittest discover

**Note** You need to explicitly add julia to your ``PATH``, an alias
will not work.

``pyjulia`` is tested against Python versions 2.7 and 3.5. Older
versions of Python (than 2.7) are not supported.

Installation
------------

You will need to install PyCall in your existing Julia installation

.. code:: julia

Pkg.add("PyCall")

Your python installation must be able to call Julia. If your installer
does not add the Julia binary directory to your ``PATH``, you will have
to add it.

Then finally you have to install pyjulia.

To get released versions you can use:

::

pip install pyjulia

You may clone it directly to your home directory.

::

git clone https://github.com/JuliaPy/pyjulia

then inside the pyjulia directory you need to run the python setup file

::

[sudo] pip install [-e] .

The ``-e`` flag makes a development install meaning that any change to
pyjulia source tree will take effect at next python interpreter restart
without having to reissue an install command.

``pyjulia`` is known to work with ``PyCall.jl`` ≥ ``v0.7.2``.

If you run into problems using ``pyjulia``, first check the version of
``PyCall.jl`` you have installed by running ``Pkg.installed("PyCall")``.

Usage
-----

To call Julia functions from python, first import the library

.. code:: python

import julia

then create a Julia object that makes a bridge to the Julia interpreter
(assuming that ``julia`` is in your ``PATH``)

.. code:: python

j = julia.Julia()

You can then call Julia functions from python, e.g.

.. code:: python

j.sind(90)

How it works
------------

PyJulia loads the ``libjulia`` library and executes the statements
therein. To convert the variables, the ``PyCall`` package is used.
Python references to Julia objects are reference counted by Python, and
retained in the ``PyCall.pycall_gc`` mapping on the Julia side (the
mapping is removed when reference count drops to zero, so that the Julia
object may be freed).

Limitations
-----------

Not all valid Julia identifiers are valid Python identifiers. Unicode
identifiers are invalid in Python 2.7 and so ``pyjulia`` cannot call or
access Julia methods/variables with names that are not ASCII only.
Additionally, it is a common idiom in Julia to append a ``!`` character
to methods which mutate their arguments. These method names are invalid
Python identifers. ``pyjulia`` renames these methods by subsituting
``!`` with ``_b``. For example, the Julia method ``sum!`` can be called
in ``pyjulia`` using ``sum_b(...)``.

.. |Build Status| image:: https://travis-ci.org/JuliaPy/pyjulia.svg?branch=master
:target: https://travis-ci.org/JuliaPy/pyjulia
.. |Build status| image:: https://ci.appveyor.com/api/projects/status/kjd0iex9gh0c3yqa?svg=true
:target: https://ci.appveyor.com/project/Keno/pyjulia

Home-page: http://julialang.org
Author: The Julia and IPython development teams.
Author-email: julia@julialang.org
License: MIT
Description-Content-Type: UNKNOWN
Description: UNKNOWN
Keywords: julia python
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

julia-0.1.5.tar.gz (217.6 kB view details)

Uploaded Source

Built Distribution

julia-0.1.5-py2.py3-none-any.whl (222.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file julia-0.1.5.tar.gz.

File metadata

  • Download URL: julia-0.1.5.tar.gz
  • Upload date:
  • Size: 217.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for julia-0.1.5.tar.gz
Algorithm Hash digest
SHA256 6f38e17f831580723a5e01bb751518b6eb9d0789dc7b5e6e12a8cc1701a2c0f0
MD5 66d2705fd23359e0ac7cb232c82684ac
BLAKE2b-256 cfd381e970293b11415cebe3d4a1930311980249861d5d5f545fdfdbe86a71ae

See more details on using hashes here.

File details

Details for the file julia-0.1.5-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for julia-0.1.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ddb09926f1d00c841f43e89d5175a5161e25f7469581d5d38ab48892a3c2e483
MD5 2580fa2e9f2cac0bbd72be3146376316
BLAKE2b-256 2e2a04e16c1b1cde76c669328e09da9e833ee50a9aed4fad2b1fddf137d2d199

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page