pipenv: tensorflow/html5lib "Your dependencies could not be resolved" but can't see problem
$ pipenv install --dev
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
You can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
Could not find a version that matches html5lib!=1.0b1,!=1.0b2,!=1.0b3,!=1.0b4,!=1.0b5,!=1.0b6,!=1.0b7,!=1.0b8,==0.9999999,>=0.99999999pre
Tried: 1.0-reupload, 0.2, 0.9, 0.10, 0.11, 0.11.1, 0.90, 0.95, 0.99, 0.999, 0.9999, 0.99999, 0.999999, 0.9999999, 0.99999999, 0.999999999, 0.999999999, 1.0b1, 1.0b2, 1.0b3, 1.0b5, 1.0b6, 1.0b7, 1.0b8, 1.0b9, 1.0b10, 1.0b10, 1.0.1, 1.0.1
I did what it suggested: pipenv install --skip-lock
and then pipenv graph
The graph shows that the only packages which ask for html5lib
are dependencies of tensorflow
, and they don’t seem to conflict with each other or the installed version:
tensorflow==1.3.0
- numpy [required: >=1.11.0, installed: 1.14.1]
- protobuf [required: >=3.3.0, installed: 3.5.2]
- setuptools [required: Any, installed: 38.5.1]
- six [required: >=1.9, installed: 1.11.0]
- six [required: >=1.10.0, installed: 1.11.0]
- tensorflow-tensorboard [required: >=0.1.0,<0.2.0, installed: 0.1.8]
- bleach [required: ==1.5.0, installed: 1.5.0]
- html5lib [required: >=0.999,<0.99999999,!=0.9999,!=0.99999, installed: 0.9999999]
- six [required: Any, installed: 1.11.0]
- six [required: Any, installed: 1.11.0]
- html5lib [required: ==0.9999999, installed: 0.9999999]
- six [required: Any, installed: 1.11.0]
- markdown [required: >=2.6.8, installed: 2.6.11]
- numpy [required: >=1.11.0, installed: 1.14.1]
- protobuf [required: >=3.2.0, installed: 3.5.2]
- setuptools [required: Any, installed: 38.5.1]
- six [required: >=1.9, installed: 1.11.0]
- six [required: >=1.10.0, installed: 1.11.0]
- werkzeug [required: >=0.11.10, installed: 0.14.1]
- wheel [required: >=0.26, installed: 0.30.0]
- wheel [required: >=0.26, installed: 0.30.0]
So we have:
html5lib [required: >=0.999,<0.99999999,!=0.9999,!=0.99999, installed: 0.9999999]
and
html5lib [required: ==0.9999999, installed: 0.9999999]
That package uses a pretty horrible versioning scheme, but the required versions don’t seem to conflict.
One requires 0.9999999
(seven zeros, what we have installed) and the other requires <0.99999999
(eight zeros). Should be ok?
About this issue
- Original URL
- State: closed
- Created 6 years ago
- Reactions: 3
- Comments: 52 (22 by maintainers)
omg is this real
Well I found the problem and a solution, if not an explanation for how it happened.
I spent a while stepping through the underlying code, i.e.
Somehow the bogus
html5lib>=0.99999999pre
requirement had got stuck in the dependency cache file.Now I knew what to do…
Success - lock file was created without error.
This also explains why it worked under Python 2.7 - I assume because pipenv has a separate dependency cache file per python version.
@techalchemy thanks again for the work around. It solved my actual problem (installing jupyter + tensorflow): I put jupyter into the development packages and kept tensorflow in the production packages. This way, all packages can be locked.
@henadzit Because spaCy is dropping its required version in 2.0.11, it felt more correct to use the TensorFlow version. I’m not sure what the canonical way to do this is, but I just (temporarily, I hope) pulled tensorflow out of my Pipfile and installed my packages like this:
@henadzit try
pipenv lock --clear
or wipe any of the following directories if they exist:@anentropic just uninstall all of the pipenvs you have, everywhere, and reinstall using system 3.6.4 with
--user
this versioning scheme is just absurd
I can also reproduce with a minimal example… in a new shell, create an empty directory, the following Pipfile and run
pipenv install