Spaces:
Sleeping
Sleeping
MilesCranmer
commited on
Merge pull request #363 from MilesCranmer/pycall-install-help
Browse files- .github/workflows/CI.yml +9 -0
- pysr/julia_helpers.py +14 -1
- pysr/test/incremental_install_simulator.dockerfile +52 -0
- pysr/version.py +1 -1
.github/workflows/CI.yml
CHANGED
@@ -78,6 +78,15 @@ jobs:
|
|
78 |
COVERALLS_PARALLEL: true
|
79 |
run: coveralls --service=github
|
80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
conda_test:
|
82 |
runs-on: ${{ matrix.os }}
|
83 |
defaults:
|
|
|
78 |
COVERALLS_PARALLEL: true
|
79 |
run: coveralls --service=github
|
80 |
|
81 |
+
incremental_install:
|
82 |
+
runs-on: ubuntu-latest
|
83 |
+
steps:
|
84 |
+
- uses: actions/checkout@v2
|
85 |
+
- name: "Build incremental install"
|
86 |
+
run: docker build -t pysr -f pysr/test/incremental_install_simulator.dockerfile .
|
87 |
+
- name: "Test incremental install"
|
88 |
+
run: docker run --rm pysr /bin/bash -l -c 'python3 -m pysr.test main && python3 -m pysr.test env'
|
89 |
+
|
90 |
conda_test:
|
91 |
runs-on: ${{ matrix.os }}
|
92 |
defaults:
|
pysr/julia_helpers.py
CHANGED
@@ -81,7 +81,20 @@ def install(julia_project=None, quiet=False, precompile=None): # pragma: no cov
|
|
81 |
if precompile == False:
|
82 |
os.environ["JULIA_PKG_PRECOMPILE_AUTO"] = "0"
|
83 |
|
84 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
Main, init_log = init_julia(julia_project, quiet=quiet, return_aux=True)
|
86 |
io_arg = _get_io_arg(quiet)
|
87 |
|
|
|
81 |
if precompile == False:
|
82 |
os.environ["JULIA_PKG_PRECOMPILE_AUTO"] = "0"
|
83 |
|
84 |
+
try:
|
85 |
+
julia.install(quiet=quiet)
|
86 |
+
except julia.tools.PyCallInstallError:
|
87 |
+
# Attempt to reset PyCall.jl's build:
|
88 |
+
subprocess.run(
|
89 |
+
[
|
90 |
+
"julia",
|
91 |
+
"-e",
|
92 |
+
f'ENV["PYTHON"] = "{sys.executable}"; import Pkg; Pkg.build("PyCall")',
|
93 |
+
],
|
94 |
+
)
|
95 |
+
# Try installing again:
|
96 |
+
julia.install(quiet=quiet)
|
97 |
+
|
98 |
Main, init_log = init_julia(julia_project, quiet=quiet, return_aux=True)
|
99 |
io_arg = _get_io_arg(quiet)
|
100 |
|
pysr/test/incremental_install_simulator.dockerfile
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# This dockerfile simulates a user installation that first
|
2 |
+
# builds PySR for Python 3.9, and then upgrades to Python 3.10.
|
3 |
+
# Normally this would cause an error when installing PyCall, so we want to
|
4 |
+
# ensure that PySR can automatically patch things.
|
5 |
+
FROM debian:bullseye-slim
|
6 |
+
|
7 |
+
ENV DEBIAN_FRONTEND=noninteractive
|
8 |
+
|
9 |
+
# Install juliaup and pyenv:
|
10 |
+
RUN apt-get update && apt-get install -y curl git build-essential \
|
11 |
+
libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \
|
12 |
+
libncurses5-dev libncursesw5-dev xz-utils libffi-dev liblzma-dev && \
|
13 |
+
apt-get clean && \
|
14 |
+
rm -rf /var/lib/apt/lists/*
|
15 |
+
|
16 |
+
# Install juliaup:
|
17 |
+
RUN curl -fsSL https://install.julialang.org | sh -s -- -y
|
18 |
+
|
19 |
+
# Install pyenv:
|
20 |
+
RUN curl -fsSL curl https://pyenv.run | sh && \
|
21 |
+
echo 'export PATH="/root/.pyenv/bin:$PATH"' >> ~/.bashrc && \
|
22 |
+
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc && \
|
23 |
+
echo 'eval "$(pyenv init -)"' >> ~/.bashrc && \
|
24 |
+
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
|
25 |
+
|
26 |
+
# Default to using bash -l:
|
27 |
+
SHELL ["/bin/bash", "-l", "-c"]
|
28 |
+
|
29 |
+
RUN juliaup add 1.8 && juliaup default 1.8
|
30 |
+
RUN pyenv install 3.9.2 && pyenv global 3.9.2
|
31 |
+
RUN python3 -m pip install --upgrade pip
|
32 |
+
|
33 |
+
# Get PySR source:
|
34 |
+
WORKDIR /pysr
|
35 |
+
ADD ./requirements.txt /pysr/requirements.txt
|
36 |
+
RUN python3 -m pip install -r /pysr/requirements.txt
|
37 |
+
|
38 |
+
ADD ./setup.py /pysr/setup.py
|
39 |
+
ADD ./pysr/ /pysr/pysr/
|
40 |
+
|
41 |
+
# First install of PySR:
|
42 |
+
RUN python3 -m pip install .
|
43 |
+
RUN python3 -m pysr install
|
44 |
+
|
45 |
+
# Change Python version:
|
46 |
+
RUN pyenv install 3.10 && pyenv global 3.10 && pyenv uninstall -f 3.9.2
|
47 |
+
RUN python3 -m pip install --upgrade pip
|
48 |
+
|
49 |
+
# Second install of PySR:
|
50 |
+
RUN python3 -m pip install .
|
51 |
+
RUN rm -r ~/.julia/environments/pysr-*
|
52 |
+
RUN python3 -m pysr install
|
pysr/version.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
__version__ = "0.14.
|
2 |
__symbolic_regression_jl_version__ = "0.19.1"
|
|
|
1 |
+
__version__ = "0.14.3"
|
2 |
__symbolic_regression_jl_version__ = "0.19.1"
|