Fix cython in scipy-notebook

This commit is contained in:
Ayaz Salikhov
2022-02-21 16:52:10 +00:00
parent 3088589c06
commit 96f8bcf771
4 changed files with 54 additions and 2 deletions

View File

@@ -8,9 +8,15 @@ LABEL maintainer="Jupyter Project <jupyter@googlegroups.com>"
USER root USER root
# ffmpeg for matplotlib anim & dvipng+cm-super for latex labels
RUN apt-get update --yes && \ RUN apt-get update --yes && \
apt-get install --yes --no-install-recommends ffmpeg dvipng cm-super && \ apt-get install --yes --no-install-recommends \
# for cython: https://cython.readthedocs.io/en/latest/src/quickstart/install.html
build-essential \
# for latex labels
cm-super \
dvipng \
# for matplotlib anim
ffmpeg && \
apt-get clean && rm -rf /var/lib/apt/lists/* apt-get clean && rm -rf /var/lib/apt/lists/*
USER ${NB_UID} USER ${NB_UID}

View File

@@ -0,0 +1 @@
print("Hello World")

View File

@@ -0,0 +1,9 @@
from setuptools import setup
from Cython.Build import cythonize
from pathlib import Path
THIS_DIR = Path(__file__).parent.resolve()
setup(ext_modules=cythonize(str(THIS_DIR / "helloworld.pyx")))

View File

@@ -0,0 +1,36 @@
# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.
import logging
from pathlib import Path
import shutil
import tempfile
from conftest import TrackedContainer
LOGGER = logging.getLogger(__name__)
THIS_DIR = Path(__file__).parent.resolve()
def test_cython(container: TrackedContainer) -> None:
data_dir = THIS_DIR / "data/cython"
with tempfile.TemporaryDirectory() as host_data_dir:
"""We create temporary dir with the same content to mount it as a writeable folder
This allows to run this test in parallel many times
"""
shutil.copy(data_dir / "helloworld.pyx", host_data_dir)
shutil.copy(data_dir / "setup.py", host_data_dir)
cont_data_dir = "/home/jovyan/data"
command = "sleep infinity"
running_container = container.run_detached(
volumes={str(host_data_dir): {"bind": cont_data_dir, "mode": "rw"}},
tty=True,
command=["start.sh", "bash", "-c", command],
)
command = f"python {cont_data_dir}/setup.py build_ext --inplace"
cmd = running_container.exec_run(command)
LOGGER.debug(cmd.output.decode("utf-8"))
assert cmd.exit_code == 0, f"Command {command} failed"