Skip to content

[Bug]: Unable to get Python pandas to work #1641

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
mvgijssel opened this issue Nov 21, 2023 · 0 comments
Open

[Bug]: Unable to get Python pandas to work #1641

mvgijssel opened this issue Nov 21, 2023 · 0 comments
Labels
aarch64 aarch64 (or arm64) systems bug Something isn't working linker Related to linking (ld, ld.so or dyld) linux Linux systems python Support for Python, pip, Poetry, etc.

Comments

@mvgijssel
Copy link

Current Behavior (bug)

I'm unable to run a test suite which includes the PyPI library pandas. I get the following stack trace trying to execute the test suite using Bazel:

    import pandas._libs.window.aggregations as window_aggregations
E   ImportError: libstdc++.so.6: cannot open shared object file: No such file or directory

Now adding in stdenv.cc.cc.lib as mentioned here (#1596) and here (#1276) results in Python and Devbox itself to stop working due to missing GLIBC_2.*:

python3: /nix/store/qyd4c78dl0kbpbc3lc2klp5bzy6585g7-glibc-2.33-108/lib/libc.so.6: version `GLIBC_2.35' not found (required by /project/.devbox/nix/profile/default/lib/libgcc_s.so.1)
python3: /nix/store/qyd4c78dl0kbpbc3lc2klp5bzy6585g7-glibc-2.33-108/lib/libc.so.6: version `GLIBC_2.34' not found (required by /project/.devbox/nix/profile/default/lib/libgcc_s.so.1)

and devbox

devcontainer@accb8d220bc6:/project$ devbox add vim
2023/11/21 12:22:24 findProjectDir: path is
2023/11/21 12:22:24 finding devbox.json in dir: /project
2023/11/21 12:22:24 findProjectDir: path is
2023/11/21 12:22:24 finding devbox.json in dir: /project
Error: exit status 1

2023/11/21 12:22:24 Command stderr: nix: /nix/store/0ckxcm0bnsh64a4vi40d5wjs96i014nl-glibc-2.37-8/lib/libc.so.6: version `GLIBC_2.38' not found (required by /project/.devbox/nix/profile/default/lib/libstdc++.so.6)

2023/11/21 12:22:24
ExecutionID:cb862a02fed74ffdaf8c730630c435ba
<nil>
2023/11/21 12:22:24 findProjectDir: path is
2023/11/21 12:22:24 finding devbox.json in dir: /project

Expected Behavior (fix)
I expect running Python libraries within a Devbox shell to work

Additional context

devcontainer@accb8d220bc6:/project$ devbox version -v
2023/11/21 12:23:45 findProjectDir: path is
2023/11/21 12:23:45 finding devbox.json in dir: /project
2023/11/21 12:23:45 findProjectDir: path is
2023/11/21 12:23:45 finding devbox.json in dir: /project
Version:     0.8.2
Platform:    linux_arm64
Commit:      33ea788cb4dbf6958208669c9e4df9c1e858ad2c
Commit Time: 2023-11-15T00:23:52Z
Go Version:  go1.21.3
Launcher:    0.2.0
2023/11/21 12:23:45 findProjectDir: path is
2023/11/21 12:23:45 finding devbox.json in dir: /project

Using the following devbox file:

{
  "packages": {
    "docker": "20.10.26",
    "docker-compose": "2.23.0",
    "bazelisk": "1.18.0",
    "python": "3.9.10",
    "nodejs": "16.12.0",
    "postgresql_13": "13.6",
    "black": "22.12.0",
    "nbstripout": "0.6.1",
    "pre-commit": "3.3.3",
    "sqlfluff": "1.4.5",
    "nodePackages.prettier": "2.8.8",
    "buildifier": "5.1.0",
    "go-task": "3.24.0",
    "bazel-remote": "2.3.9",
    "awscli2": "2.13.3",
    "git": "2.42.0",
    "moreutils": "0.67"
  },
  "shell": {
    "init_hook": ["alias bazel='bazelisk'"],
    "scripts": {
      "test": ["echo \"Error: no test specified\" && exit 1"]
    }
  }
}

and the following Dockerfile

# NOTE: not pinning on sha here so we are pulling the right image for the right arch
FROM ubuntu:mantic-20231011

ARG TARGETARCH

# Setup right locale
ENV LC_ALL="en_US.UTF-8" 
ENV LANG="en_US.UTF-8" 
ENV LANGUAGE="en_US.UTF-8"
RUN apt-get update \
    && apt-get install -y locales locales-all \
    && locale-gen en_US.UTF-8 \
    && update-locale LANG=en_US.UTF-8 \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Setup the Europe/Amsterdam timezone
ENV TZ=Europe/Amsterdam
RUN apt-get update \
    && apt-get install -y tzdata \
    && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Setup non-root user for the container
# with the ability to use passwordless sudo
RUN apt-get update \
    && apt-get install -y sudo \
    && userdel --remove ubuntu \
    && useradd -u 1000 -m devcontainer -s /bin/bash \
    && usermod -a -G sudo devcontainer \
    && echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /project
RUN chown devcontainer:devcontainer /project

# Install nix and devbox installer dependencies
RUN apt-get update \
    && apt-get install -y ca-certificates curl xz-utils \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

USER devcontainer

RUN curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install linux --init none --no-confirm
RUN sudo chown -R devcontainer:devcontainer /nix

RUN curl -fsSL https://get.jetpack.io/devbox -o /tmp/install-devbox.sh && \
    chmod +x /tmp/install-devbox.sh && \
    /tmp/install-devbox.sh -f && \
    rm -f /tmp/install-devbox.sh

COPY --chown=devcontainer devbox.json devbox.lock ./

RUN devbox run -- echo "Installed Packages."

RUN devbox shellenv --init-hook >> ~/.profile

SHELL ["/bin/bash", "--login",  "-c"]

# Ensure bazel is globally enabled (not sure why the alias does not work inside devbox.json)
RUN sudo ln -s $(which bazelisk) /usr/local/bin/bazel

# The py_wheel rule requires a global python and does not work with the devbox one.
RUN sudo ln -s /project/.devbox/nix/profile/default/bin/python /usr/bin/python
RUN sudo ln -s /project/.devbox/nix/profile/default/bin/python /usr/bin/python3

COPY --chown=devcontainer . .
RUN mkdir -p /home/devcontainer/bazel
@mvgijssel mvgijssel added the bug Something isn't working label Nov 21, 2023
@gcurtis gcurtis added python Support for Python, pip, Poetry, etc. linker Related to linking (ld, ld.so or dyld) linux Linux systems aarch64 aarch64 (or arm64) systems labels Jan 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
aarch64 aarch64 (or arm64) systems bug Something isn't working linker Related to linking (ld, ld.so or dyld) linux Linux systems python Support for Python, pip, Poetry, etc.
Development

No branches or pull requests

2 participants