Kaggle / kaggle-environments

https://www.kaggle.com/competitions
Apache License 2.0
289 stars 147 forks source link

miniconda3 fails to pip-compile kaggle_environments==1.13.0 #239

Open JamesMcGuigan opened 1 year ago

JamesMcGuigan commented 1 year ago

Running pip-compile on kaggle_environments==1.13.0 works fine using the regular version of python pip.

However pip-compile using miniconda (Ubuntu 22.04 LTS) fails to resolve nested dependencies pettingzoo==1.12.0 and pickle5==0.0.12

Steps to Reproduce

requirements.in

kaggle_environments==1.13.0

BROKEN: Using miniconda pip

lsb_release -a

~/.miniconda3/bin/python3 --version   # Python 3.10.11
~/.miniconda3/bin/python3 -m venv venv
source venv/bin/activate
pip-compile -v --upgrade
...
Finding secondary dependencies:
  kaggle-environments==1.13.0 requires Flask>=1.1.2, gym==0.21.0, jsonschema>=3.0.1, numpy>=1.19.5, PettingZoo==1.12.0, pickle5==0.0.12, requests>=2.25.1, stable-baselines3==1.7.0, vec-noise>=1.1.4
  jsonschema==4.18.4        requires attrs>=22.2.0, jsonschema-specifications>=2023.03.6, referencing>=0.28.4, rpds-py>=0.7.1

  pettingzoo==1.12.0 not in cache, need to check index
  ERROR: Could not find a version that satisfies the requirement PettingZoo==1.12.0 (from kaggle_environments==1.13.0->-r requirements.in (line 11)) (from versions: 0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8, 0.1.9, 0.1.10, 0.1.11, 0.1.12, 0.1.13, 0.1.14, 1.0.0, 1.0.1, 1.1.0, 1.2.0, 1.2.1, 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 1.14.0, 1.15.0, 1.16.0, 1.17.0, 1.18.1, 1.19.0, 1.20.1, 1.21.0, 1.22.0, 1.22.1, 1.22.2, 1.22.3, 1.22.4, 1.23.0, 1.23.1)

  pickle5==0.0.12 not in cache, need to check index
  ERROR: Could not find a version that satisfies the requirement pickle5==0.0.12 (from kaggle_environments==1.13.0->-r requirements.in (line 1)) (from versions: 0.0.1, 0.0.2, 0.0.3, 0.0.4, 0.0.5, 0.0.6, 0.0.7, 0.0.8, 0.0.9, 0.0.10, 0.0.11)

These are missing from the miniconda3 repos, but are visible in pypi

WORKAROUND: Use python pip

/usr/bin/python3 --version    # Python 3.10.6
/usr/bin/python3 -m venv venv
source venv/bin/activate
pip-compile -v --upgrade
pip install -r requirements.txt

NOTE: miniconda is required to get tensorflow running on Apple M1


Poetry describes the dependency conflict as requiring Python v3.7

# pyproject.toml == kaggle-environments = "1.13.0"
poetry update
Updating dependencies
Resolving dependencies... (0.9s)

The current project's Python requirement (>=3.10,<4.0) is not compatible with some of the required packages Python requirement:
  - pickle5 requires Python >=3.5, <3.8, so it will not be satisfied for Python >=3.10,<4.0

Because kaggle-environments (1.13.0) depends on pickle5 (0.0.12) which requires Python >=3.5, <3.8, kaggle-environments is forbidden.
So, because connectx depends on kaggle-environments (1.13.0), version solving failed.