pmaji / crypto-whale-watching-app

Python Dash app that tracks whale activity in cryptocurrency markets.
MIT License
609 stars 137 forks source link

Installation fails due to conflicting urllib3 version #110

Closed NeolithEra closed 5 years ago

NeolithEra commented 5 years ago

Hi, users are unable to run crypto-whale-watching-app due to dependency conflict with urllib3 package. As shown in the following full dependency graph of crypto-whale-watching-app, crypto-whale-watching-app requires urllib3,while requests==2.21.0 requires urllib3>=1.21.1,<1.25.

According to pip’s “first found wins” installation strategy, urllib3==1.25.3 is the actually installed version. However, urllib3==1.25.3 does not satisfy urllib3>=1.21.1,<1.25.

Dependency tree------

crypto-whale-watching-app(version range:)
| +-attrs(version range:==19.1.0)
| +-bintrees(version range:==2.0.7)
| +-cbpro(version range:==1.1.4)
| +-certifi(version range:==2018.1.18)
| +-chardet(version range:==3.0.4)
| +-click(version range:==6.7)
| +-colorama(version range:==0.3.9)
| +-dash(version range:==0.30.0)
| +-dash-core-components(version range:==0.38.0)
| +-dash-html-components(version range:==0.13.2)
| +-dash-renderer(version range:==0.15.0)
| +-dash-table(version range:==3.6.0)
| +-datetime(version range:==4.3)
| +-decorator(version range:==4.2.1)
| +-flask(version range:==1.0.2)
| +-flask-compress(version range:==1.4.0)
| +-gdax(version range:==1.0.6)
| +-idna(version range:==2.6)
| +-ipython-genutils(version range:==0.2.0)
| +-itsdangerous(version range:==0.24)
| +-jinja2(version range:==2.10.1)
| +-jsonschema(version range:==2.6.0)
| +-jupyter-core(version range:==4.4.0)
| +-markupsafe(version range:==1.0)
| +-nbformat(version range:==4.4.0)
| +-numpy(version range:==1.16.2)
| +-pandas(version range:==0.24.2)
| +-plotly(version range:==2.7.0)
| | +-decorator(version range:>=4.0.6)
| | +-nbformat(version range:>=4.2)
| | +-pytz(version range:)
| | +-requests(version range:)
| | | +-chardet(version range:>=3.0.2,<3.1.0)
| | | +-idna(version range:>=2.5,<2.9)
| | | +-urllib3(version range:>=1.21.1,<1.26)
| | | +-certifi(version range:>=2017.4.17)
| | +-six(version range:)
| +-pymongo(version range:==3.5.1)
| +-pyrsistent(version range:==0.14.11)
| | +-six(version range:)
| +-python-dateutil(version range:==2.8.0)
| +-pytz(version range:==2019.1)
| +-requests(version range:==2.21.0)
| | +-chardet(version range:>=3.0.2,<3.1.0)
| | +-idna(version range:>=2.5,<2.9)
| | +-urllib3(version range:>=1.21.1,<1.25)
| | +-certifi(version range:>=2017.4.17)
| +-retrying(version range:==1.3.3)
| | +-six(version range:>=1.7.0)
| +-six(version range:==1.10.0)
| +-sortedcontainers(version range:==2.1.0)
| +-traitlets(version range:==4.3.2)
| +-urllib3(version range:>=1.24.2)
| +-websocket-client(version range:==0.40.0)
| | +-six(version range:)
| +-werkzeug(version range:==0.15.2)
| +-zope.interface(version range:==4.6.0)

Thanks for your help. Best, Neolith

NeolithEra commented 5 years ago

Solution

  1. Fix your direct dependency to be urllib3>=1.24.2,<1.25。 I have checked this revision will not affect your downstream projects now.
  2. Lock urllib3==1.24.2.

Which solution do you prefer, 1 or 2?

@pmaji Please let me know your choice. I can submit a PR to solve this issue.

pmaji commented 5 years ago

Thanks for pointing this out @NeolithEra.

I have gone with options 2 and implemented the change. Testing looks good on my end. Let me know if it is now working for you! Again, really appreciate your involvement! If for some reason this didn't fix it I'll go ahead and re-open the issue.