• Re: Making 'compiled' modules work with multiple python versions on Lin

    From Barry@21:1/5 to All on Fri Mar 29 09:10:17 2024
    On 28 Mar 2024, at 16:13, Olivier B. via Python-list <[email protected]> wrote:

    But on Linux, it seems that linking to libpython3.so instead of libpython3.11.so.1.0 does not have the same effect, and results in
    many unresolved python symbols at link time

    Is this functionality only available on Windows?

    Python limited API works on linux, but you do not link against the .so on linux I recall.

    You will have missed that libpython3.so is a symlink to libpython3.11.so.10.

    Windows build practices do not translate one-to-one to linux, or macOS.

    Barry

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Barry Scott@21:1/5 to All on Fri Mar 29 16:45:58 2024
    On 29 Mar 2024, at 16:09, Olivier B. <[email protected]> wrote:

    It is not a symlink on my system, where i built python myself, but a
    15KB so file. But it seems to lack lots of python symbols.

    Maybe what i should do is actually make libpython.so a physical copy
    of libpyton311.so before linking to it, so now on any system the
    module would look to load libpython.so, which could be pointing to any version. I'll try that next

    You do not link against the .so at all. All the symbols you need are defined in the
    python process that loads the extension. Try without the -lpython and it should just work.

    Barry



    Le ven. 29 mars 2024 à 10:10, Barry <[email protected]> a écrit :



    On 28 Mar 2024, at 16:13, Olivier B. via Python-list <[email protected]> wrote:

    But on Linux, it seems that linking to libpython3.so instead of
    libpython3.11.so.1.0 does not have the same effect, and results in
    many unresolved python symbols at link time

    Is this functionality only available on Windows?

    Python limited API works on linux, but you do not link against the .so on linux I recall.

    You will have missed that libpython3.so is a symlink to libpython3.11.so.10. >>
    Windows build practices do not translate one-to-one to linux, or macOS.

    Barry




    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Barry@21:1/5 to All on Tue Apr 2 16:16:09 2024
    On 1 Apr 2024, at 18:14, Left Right via Python-list <[email protected]> wrote:

    It sounds weird that symbols from Limited API are _missing_ (I'd
    expect them to be there no matter what library version you link with).

    You have to specify the version of the limited API that you want to use.
    Each release adds more symbols to the limited API.
    So if you compile against 3.10 version it works with 3.10, 3.11, 3.12 etc,
    but not with 3.9.

    My pycxx project has test code that I use to verify pycxx’s use of python API.
    You could check out the source and run my tests to see how things work.
    It is on https://sourceforge.net/projects/cxx/

    Barry

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)