KxSystems / embedPy

Allows the kdb+ interpreter to call Python functions
https://code.kx.com/q/interfaces
Apache License 2.0
87 stars 42 forks source link

Python 3.9 support #106

Closed cmccarthy1 closed 2 weeks ago

cmccarthy1 commented 2 years ago

Currently embedPy does not operate within Python 3.9 anaconda build environments

q p.q
KDB+ 4.0 2020.05.04 Copyright (C) 1993-2020 Kx Systems

'libpython
  [2]  /usr/local/anaconda3/envs/qenv/q/p.q:12: 
 `L`M`H`P`B set'@[system"python3 ",;c;{system"python ",c}];if[count M;if[k~key k:`$":",M;L::M]];.P.env:not H~P;
 .p:(`:./p 2:(`init;3))[L;H;B]]
    ^
q.p))\

As indicated here for Python 3.8 https://docs.python.org/3/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build the issue is likely due to libpython not being shipped with conda.

cmccarthy1 commented 2 years ago

Resolved with release of 1.5.0

borisal commented 2 years ago

Hi,

I think I have the same issue with the release 1.5 and Python 3.9.7/Windows (64 bit) not working on KDB 4.0 2021.07.12 (64 bit). I manually installed embedPy_windows-1.5.0 release by copying p.q and p.k to c:\q and copying q.dll to c:\q\w64. I am not using Anaconda Python.

How can I resolve this?

Output from q test.q (same as from 'q p.q'):

q test.q

'libpython [5] D:\long_path\p.q:14: .P.env:not H~P; .p:(:./p 2:(init;3))[L;H;B]]

Thank you

borisal commented 2 years ago

I switched to Anaconda and created Python 3.8 environment. Now, I can install embedPy and jupyterq.