Dan
Dan

Reputation: 45741

Installing older version of h2o in conda virtual environment on Windows

I'm struggling to figure out conda virtual environments on windows. All I want is to be able to have different versions of h2o installed at the same time because of their insane decision to not allow you to be able to load files saved in even the most minor different version.

I created a virtual environment by cloning my base anaconda:

conda create -n h203_14_0_7 --clone base

I then activated the virtual environment like so:

C:\ProgramData\Anaconda3\Scripts\activate h203_14_0_7

Now that I'm in the virtual environment (I see the (h203_14_0_7) at the beginning of the prompt), i want to uninstall the version of h2o in this virtual environment so I tried:

pip uninstall h2o

But this output

enter image description here

which to me looks like it's going to uninstall the global h2o rather than the virtual environment h2o. So I think it's using the global pip instead of the pip it should have cloned off the base. So how to I use the virtual environment pip to uninstall h2o just for my virtual environment and how can I be sure that it's doing the right thing?

I then ran

conda intall pip

and it seems that after that I was able to use pip to uninstall h2o only from the virtual environment (I hope). I then downloaded the older h2o version from here: https://github.com/h2oai/h2o-3/releases/tag/jenkins-rel-weierstrass-7

but when I try install it I get

(h203_14_0_7) C:\ProgramData\Anaconda3\envs\h203_14_0_7>pip install C:\Users\dan25\Downloads\h2o-3-jenkins-rel-weierstrass-7.tar.gz
Processing c:\users\dan25\downloads\h2o-3-jenkins-rel-weierstrass-7.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\ProgramData\Anaconda3\envs\h203_14_0_7\lib\tokenize.py", line 452, in open
        buffer = _builtin_open(filename, 'rb')
    FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\dan25\\AppData\\Local\\Temp\\pip-sf7r_6pm-build\\setup.py'

So what now?

Upvotes: 0

Views: 1152

Answers (3)

Dan
Dan

Reputation: 45741

I have this working now. I think the trick is to make sure you do NOT have h2o installed on your base python. I did the following:

pip uninstall h2o
conda create --name h2o-base pip
conda activate h2o-base
conda install numpy
conda install pandas
conda install requests
conda install tabulate
conda install colorama
conda install future
conda install jupyter
python -m pip install ipykernel
conda deactivate

And now to install specific versions of h2o, you need to URL of the .whl file for that version and you can find a list of the URLs of all the old versions here: https://github.com/h2oai/h2o-3/blob/master/Changes.md

So for example to install version 3.18.0.8:

conda create --name h2o-3-18-0-8 --clone h2o-base
conda activate h2o-3-18-0-8
pip install http://h2o-release.s3.amazonaws.com/h2o/rel-wolpert/8/Python/h2o-3.18.0.8-py2.py3-none-any.whl
python -m ipykernel install --user --name h2o-3-18-0-8 --display-name "Python (h2o-3-18-0-8)"

or version 3.20.0.2 (make sure to conda deactivate first):

conda create --name h2o-3-20-0-2 --clone h2o-base
conda activate h2o-3-20-0-2
pip install http://h2o-release.s3.amazonaws.com/h2o/rel-wright/2/Python/h2o-3.20.0.2-py2.py3-none-any.whl
python -m ipykernel install --user --name h2o-3-20-0-2 --display-name "Python (h2o-3-20-0-2)"

This set-up allows me to have multiple versions of h2o installed on the same computer and if I have to use serialized models I just have to run python from the virtual environment with the correct version of h2o installed. I think this is preferable to uninstalling and reinstalling h2o each time.

Here is the environments.yml file if you want to skip all the manual installs above:

name: h2o-base
channels:
  - conda-forge
  - defaults
dependencies:
  - asn1crypto=0.24.0=py37_1003
  - backcall=0.1.0=py_0
  - bleach=3.0.2=py_0
  - ca-certificates=2018.10.15=ha4d7672_0
  - certifi=2018.10.15=py37_1000
  - cffi=1.11.5=py37hfa6e2cd_1001
  - chardet=3.0.4=py37_1003
  - colorama=0.4.0=py_0
  - cryptography=2.3=py37h74b6da3_0
  - cryptography-vectors=2.3.1=py37_1000
  - decorator=4.3.0=py_0
  - entrypoints=0.2.3=py37_1002
  - future=0.16.0=py37_1002
  - icu=58.2=vc14_0
  - idna=2.7=py37_1002
  - ipykernel=5.1.0=pyh24bf2e0_0
  - ipython=7.0.1=py37h39e3cac_1000
  - ipython_genutils=0.2.0=py_1
  - ipywidgets=7.4.2=py_0
  - jedi=0.13.1=py37_1000
  - jinja2=2.10=py_1
  - jpeg=9b=vc14_2
  - jsonschema=2.6.0=py37_1002
  - jupyter=1.0.0=py_1
  - jupyter_client=5.2.3=py_1
  - jupyter_console=6.0.0=py_0
  - jupyter_core=4.4.0=py_0
  - libflang=5.0.0=vc14_20180208
  - libpng=1.6.34=vc14_0
  - libsodium=1.0.16=vc14_0
  - llvm-meta=5.0.0=0
  - markupsafe=1.0=py37hfa6e2cd_1001
  - mistune=0.8.4=py37hfa6e2cd_1000
  - nbconvert=5.3.1=py_1
  - nbformat=4.4.0=py_1
  - notebook=5.7.0=py37_1000
  - openblas=0.2.20=vc14_8
  - openmp=5.0.0=vc14_1
  - openssl=1.0.2p=hfa6e2cd_1001
  - pandas=0.23.4=py37h830ac7b_1000
  - pandoc=2.3.1=0
  - pandocfilters=1.4.2=py_1
  - parso=0.3.1=py_0
  - pickleshare=0.7.5=py37_1000
  - pip=18.1=py37_1000
  - prometheus_client=0.4.2=py_0
  - prompt_toolkit=2.0.6=py_0
  - pycparser=2.19=py_0
  - pygments=2.2.0=py_1
  - pyopenssl=18.0.0=py37_1000
  - pyqt=5.6.0=py37h764d66f_7
  - pysocks=1.6.8=py37_1002
  - python=3.7.0=hc182675_1005
  - python-dateutil=2.7.3=py_0
  - pytz=2018.5=py_0
  - pywinpty=0.5.4=py37_1002
  - pyzmq=17.1.2=py37hf576995_1001
  - qt=5.6.2=vc14_1
  - qtconsole=4.4.2=py_1
  - requests=2.19.1=py37_1001
  - send2trash=1.5.0=py_0
  - setuptools=40.4.3=py37_0
  - simplegeneric=0.8.1=py_1
  - sip=4.18.1=py37h6538335_0
  - six=1.11.0=py37_1001
  - tabulate=0.8.2=py_0
  - terminado=0.8.1=py37_1001
  - testpath=0.4.2=py37_1000
  - tornado=5.1.1=py37hfa6e2cd_1000
  - traitlets=4.3.2=py37_1000
  - urllib3=1.23=py37_1001
  - vc=14=0
  - vs2015_runtime=14.0.25420=0
  - wcwidth=0.1.7=py_1
  - webencodings=0.5.1=py_1
  - wheel=0.32.1=py37_0
  - widgetsnbextension=3.4.2=py37_1000
  - win_inet_pton=1.0.1=py37_1002
  - wincertstore=0.2=py37_1002
  - winpty=0.4.3=4
  - zeromq=4.2.5=vc14_2
  - zlib=1.2.11=vc14_0
  - blas=1.0=mkl
  - icc_rt=2017.0.4=h97af966_0
  - intel-openmp=2019.0=118
  - m2w64-gcc-libgfortran=5.3.0=6
  - m2w64-gcc-libs=5.3.0=7
  - m2w64-gcc-libs-core=5.3.0=7
  - m2w64-gmp=6.1.0=2
  - m2w64-libwinpthread-git=5.0.0.4634.697f757=2
  - mkl=2019.0=118
  - mkl_fft=1.0.6=py37hdbbee80_0
  - mkl_random=1.0.1=py37h77b88f5_1
  - msys2-conda-epoch=20160418=1
  - numpy=1.15.2=py37ha559c80_0
  - numpy-base=1.15.2=py37h8128ebf_0

Upvotes: 0

Darren Cook
Darren Cook

Reputation: 28913

I had trouble (e.g. https://0xdata.atlassian.net/browse/PUBDEV-3370 ) getting that approach to ever work. It felt like some kind of global dependency was in there, somewhere.

So, I personally just uninstall, and install the desired version, as I need to move between versions. (Actually, I am more likely to use a different VirtualBox or AWS image for each.)

However I noticed searching for conda on the H2O jira that there is a lot of activity recently. They might all be pointing out the same bug you have found, but if so it sounds like it is something getting enough attention to get fixed.

Aside: finding old versions (and your edit showing install problems)

To find, e.g. 3.14.0.7, google it with "h2o". The top hit is http://h2o-release.s3.amazonaws.com/h2o/rel-weierstrass/7/index.html

The "rel-weierstrass" represents 3.14.0, and the 7 is in the URL. (I've yet to see a full list of all the rel-XXX names, but google will always find at least one in the series, even if it won't find the exact minor version.)

Download the zip file you find there. Inside you will find both an R package, and a whl package for Python. So unzip it, extract the one you want, then pip install it.

These zip files are always on S3 (AFAIK). The link you showed was a source snapshot, on github.

Upvotes: 1

phd
phd

Reputation: 94406

Install requirements:

pip install requests tabulate numpy scikit-learn

Extract the archive:

zcat h2o-3-jenkins-rel-weierstrass-7.tar.gz | tar xvf -

cd into Python directory and build:

cd h2o-py
../gradlew build

Upvotes: 0

Related Questions