Skip to content



Install PyKX using pip:

pip install --extra-index-url=https://$KX_PYPI_USER:$ pykx

PyKX only supports Python versions 3.7 to 3.10.

Then if you have a q license, run q embedded within Python:

$ python
>>> import pykx as kx
>>>'Hello PyKX')
`Hello PyKX
>>> kx.q('10 {x,sum -2#x}/ 1 1') # Run q code within Python
pykx.LongVector(pykx.q('1 1 2 3 5 8 13 21 34 55 89 144'))

To run PyKX without a license, refer to the modes of operation documentation.

For more installation details, refer to the installation documentation.


For any inquires or feedback regarding PyKX, please contact

PyKX is an interface between Python and q. It takes a Python-first approach to this integration. This is to say it takes the stance that q should be used primarily as a data processing engine and database, and q should be used primarily as a domain-specific language (DSL) embedded within Python, which is a more general-purpose.

This is not to say that the interface is limiting to developers familiar to q. Expert users of q using this interface are capable of running the same analyses they would normally run within a q process using PyKX. If a user so chooses, they can simply run q code through PyKX. However, through PyKX, Python developers who have no experience with q can access and leverage q through a Pythonic interface.

As explained in the modes of operation documentation, the interface provides two key modalities:

  1. It operates as a truly embedded version of q within Python; a q license is required.
  2. It provides an IPC interface allowing users to query q data on external q processes; no q license is required.

See Comparisons for comparisons between PyKX and other Python/q integration options.

The Interface Overview is a Python notebook that demonstrates some key features of the interface.