features icon indicating copy to clipboard operation
features copied to clipboard

Need --enabled-shared (aka python-dev) for Python feature

Open davetapley opened this issue 8 months ago • 2 comments

AFAICT no way to --enable-shared for Python feature.

I ran into this with:

    "image": "mcr.microsoft.com/devcontainers/universal:2",
    "features": {
        "ghcr.io/devcontainers/features/python:1": {
            "version": "3.11.4"
        },

And tried to use pyinstaller, but fails with:

OSError: Python library not found: libpython3.11m.so.1.0, libpython3.11.so.1.0, libpython3.11.so, libpython3.11mu.so.1.0, libpython3.11m.so
    This means your Python installation does not come with proper shared library files.
    This usually happens due to missing development package, or unsuitable build parameters of the Python installation.

    * On Debian/Ubuntu, you need to install Python development packages:
      * apt-get install python3-dev
      * apt-get install python-dev
    * If you are building Python by yourself, rebuild with `--enable-shared` (or, `--enable-framework` on macOS).

Somewhat confusingly apt-get install gives:

python3-dev is already the newest version (3.8.2-0ubuntu2).

But I'm guessing that's no use because ghcr.io/devcontainers/features/python has built / installed its own Python, and that's what pyinstaller is using.

Other option is --enable-shared, but I'm not sure how to do that since the Python feature handles building Python.


Note that if requested version is available in Oryx then I think you get --enable-shared by default because this, so perhaps is should be on by default when building from source too?

Otherwise, for example, a Python could be added to Oryx and now suddenly you'd get --enabled-shared behavior when you previously didn't. I don't know if Oryx prunes older versions, but I can also envisage it suddenly not being --enable-shared if that does happen.

davetapley avatar Nov 07 '23 18:11 davetapley