geokey icon indicating copy to clipboard operation
geokey copied to clipboard

Installation fails due to conflicting oauthlib version

Open NeolithEra opened this issue 5 years ago • 5 comments

Hi, users are unable to run geokey due to dependency conflict with oauthlib package. As shown in the following full dependency graph of geokey, geokey requires oauthlib ==2.0.6,while django-oauth-toolkit requires oauthlib ==2.0.1.

According to pip’s “first found wins” installation strategy, oauthlib ==2.0.6 is the actually installed version. However, oauthlib ==2.0.6 does not satisfy ==2.0.1.

Dependency tree-----------

geokey  - 1.11.2
| +- django(install version:1.11.26 version range:>=1.8.19,<1.12)
| | +- pytz(install version:2017.2 version range:*)
| +- django-aggregate-if(install version:0.5 version range:==0.5)
| | +- six(install version:1.13.0 version range:>=1.6.1)
| +- django-allauth(install version:0.33.0 version range:==0.33.0)
| +- django-braces(install version:1.11.0 version range:==1.11.0)
| +- django-crontab(install version:0.7.1 version range:==0.7.1)
| | +- django(install version:1.11.26 version range:>=1.8)
| | | +- pytz(install version:2017.2 version range:*)
| +- django-hstore(install version:1.4.2 version range:==1.4.2)
| | +- django-discover-runner(install version:1.0 version range:==1.0)
| | +- psycopg2(install version:2.7.3.1 version range:>=2.4.3)
| +- django-model-utils(install version:3.1.2 version range:==3.1.2)
| | +- django(install version:1.11.26 version range:>=1.8)
| | | +- pytz(install version:2017.2 version range:*)
| +- django-nose(install version:1.4.5 version range:==1.4.5)
| | +- nose(install version:1.3.7 version range:>=1.2.1)
| +- django-oauth-toolkit(install version:0.12.0 version range:==0.12.0)
| | +- django(install version:1.11.26 version range:>=1.8)
| | | +- pytz(install version:2017.2 version range:*)
| | +- django-braces(install version:1.11.0 version range:>=1.11.0)
| | +- oauthlib(install version:2.0.1 version range:==2.0.1)
| | +- six(install version:1.13.0 version range:*)
| +- django-pgjson(install version:0.3.1 version range:==0.3.1)
| +- django-simple-history(install version:1.8.2 version range:==1.8.2)
| +- djangorestframework(install version:3.9.4 version range:==3.9.4)
| +- djangorestframework-gis(install version:0.14.0 version range:==0.14.0)
| +- easy-thumbnails(install version:2.4.2 version range:==2.4.2)
| +- facebook-sdk(install version:2.0.0 version range:==2.0.0)
| | +- requests(install version:2.20.0 version range:*)
| | | +- certifi(install version:2019.11.28 version range:>=2017.4.17)
| | | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | | +- idna(install version:2.7 version range:>=2.5,<2.8)
| | | +- urllib3(install version:1.24.3 version range:>=1.21.1,<1.25)
| +- gdal(install version:1.10.0 version range:==1.10.0)
| +- gdata(install version:2.0.18 version range:==2.0.18)
| +- google-api-python-client(install version:1.6.4 version range:==1.6.4)
| | +- httplib2(install version:0.14.0 version range:<1dev,>=0.9.2)
| | +- oauth2client(install version:4.1.2 version range:<5.0.0dev,>=1.5.0)
| | | +- httplib2(install version:0.14.0 version range:>=0.9.1)
| | | +- pyasn1(install version:0.4.8 version range:>=0.1.7)
| | | +- pyasn1-modules(install version:0.2.7 version range:>=0.0.5)
| | | +- rsa(install version:4.0 version range:>=3.1.4)
| | | | +- pyasn1(install version:0.4.8 version range:>=0.1.3)
| | | +- six(install version:1.13.0 version range:>=1.6.1)
| | +- six(install version:1.13.0 version range:>=1.6.1,<2dev)
| | +- uritemplate(install version:3.0.0 version range:<4dev,>=3.0.0)
| +- iso8601(install version:0.1.12 version range:==0.1.12)
| +- moment(install version:0.8.2 version range:==0.8.2)
| | +- dateparser(install version:0.7.2 version range:>=0.6)
| | | +- python-dateutil(install version:2.8.1 version range:*)
| | | +- pytz(install version:2017.2 version range:*)
| | | +- regex(install version:2019.11.1 version range:*)
| | | +- tzlocal(install version:2.0.0 version range:*)
| | | | +- pytz(install version:2017.2 version range:*)
| | +- pytz(install version:2017.2 version range:>=2017.2)
| | +- times(install version:0.7 version range:*)
| | | +- arrow(install version:0.15.4 version range:*)
| | | | +- backports.functools-lru-cache(install version:1.6.1 version range:>=1.2.1)
| | | | +- python-dateutil(install version:2.8.1 version range:*)
| +- nose(install version:1.3.7 version range:==1.3.7)
| +- oauth2client(install version:4.1.2 version range:==4.1.2)
| | +- httplib2(install version:0.14.0 version range:>=0.9.1)
| | +- pyasn1(install version:0.4.8 version range:>=0.1.7)
| | +- pyasn1-modules(install version:0.2.7 version range:>=0.0.5)
| | +- rsa(install version:4.0 version range:>=3.1.4)
| | | +- pyasn1(install version:0.4.8 version range:>=0.1.3)
| | +- six(install version:1.13.0 version range:>=1.6.1)
| +- oauthlib(install version:2.0.6 version range:==2.0.6)
| +- pillow(install version:4.3.0 version range:==4.3.0)
| +- psycopg2(install version:2.7.3.1 version range:==2.7.3.1)
| +- python-magic(install version:0.4.15 version range:==0.4.15)
| +- pytz(install version:2017.2 version range:==2017.2)
| +- requests(install version:2.20.0 version range:==2.20.0)
| | +- certifi(install version:2019.11.28 version range:>=2017.4.17)
| | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | +- idna(install version:2.7 version range:>=2.5,<2.8)
| | +- urllib3(install version:1.24.3 version range:>=1.21.1,<1.25)
| +- tweepy(install version:3.5.0 version range:==3.5.0)
| | +- requests(install version:2.20.0 version range:>=2.4.3)
| | | +- certifi(install version:2019.11.28 version range:>=2017.4.17)
| | | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | | +- idna(install version:2.7 version range:>=2.5,<2.8)
| | | +- urllib3(install version:1.24.3 version range:>=1.21.1,<1.25)
| | +- requests-oauthlib(install version:1.3.0 version range:>=0.4.1)
| | +- six(install version:1.13.0 version range:>=1.7.3)

Thanks for your help. Best, Neolith

NeolithEra avatar Dec 07 '19 12:12 NeolithEra

Suggested Solution

  1. Fix your direct dependency to be django-nose>=1.4.5. I have checked this revision will not affect your downstream projects now.
  2. Remove your direct dependency oauthlib, and use oauthlib transitively introduced by django-nose.

@oliverroick Which solution do you prefer, 1 or 2? Please let me know your choice. I can submit a PR to solve this issue.

NeolithEra avatar Dec 07 '19 12:12 NeolithEra

Hi @NeolithEra, thanks for the report. I'm not maintaining this project any more so I'm not the best person to make the call. Maybe @josokinas can help.

oliverroick avatar Dec 08 '19 17:12 oliverroick

@oliverroick Thanks for your feedback, waiting for @josokinas's response :- P .

NeolithEra avatar Dec 13 '19 10:12 NeolithEra

@NeolithEra CI does not have any problem installing from scratch - please open one or another PR, or even both, we'll see whether CI build succeeds and then can decide.

josokinas avatar Dec 14 '19 15:12 josokinas

ISSUES

Hi, users are unable to run *geokey* due to dependency conflict with oauthlib package. As shown in the following full dependency graph of *geokey*, *geokey* requires oauthlib ==2.0.6,while *django-oauth-toolkit* requires oauthlib ==2.0.1.

geokey  - 1.11.2
| +- django(install version:1.11.26 version range:>=1.8.19,<1.12)
| | +- pytz(install version:2017.2 version range:*)
| +- django-aggregate-if(install version:0.5 version range:==0.5)
| | +- six(install version:1.13.0 version range:>=1.6.1)
| +- django-allauth(install version:0.33.0 version range:==0.33.0)
| +- django-braces(install version:1.11.0 version range:==1.11.0)
| +- django-crontab(install version:0.7.1 version range:==0.7.1)
| | +- django(install version:1.11.26 version range:>=1.8)
| | | +- pytz(install version:2017.2 version range:*)
| +- django-hstore(install version:1.4.2 version range:==1.4.2)
| | +- django-discover-runner(install version:1.0 version range:==1.0)
| | +- psycopg2(install version:2.7.3.1 version range:>=2.4.3)
| +- django-model-utils(install version:3.1.2 version range:==3.1.2)
| | +- django(install version:1.11.26 version range:>=1.8)
| | | +- pytz(install version:2017.2 version range:*)
| +- django-nose(install version:1.4.5 version range:==1.4.5)
| | +- nose(install version:1.3.7 version range:>=1.2.1)
| +- django-oauth-toolkit(install version:0.12.0 version range:==0.12.0)
| | +- django(install version:1.11.26 version range:>=1.8)
| | | +- pytz(install version:2017.2 version range:*)
| | +- django-braces(install version:1.11.0 version range:>=1.11.0)
| | +- oauthlib(install version:2.0.1 version range:==2.0.1)
| | +- six(install version:1.13.0 version range:*)
| +- django-pgjson(install version:0.3.1 version range:==0.3.1)
| +- django-simple-history(install version:1.8.2 version range:==1.8.2)
| +- djangorestframework(install version:3.9.4 version range:==3.9.4)
| +- djangorestframework-gis(install version:0.14.0 version range:==0.14.0)
| +- easy-thumbnails(install version:2.4.2 version range:==2.4.2)
| +- facebook-sdk(install version:2.0.0 version range:==2.0.0)
| | +- requests(install version:2.20.0 version range:*)
| | | +- certifi(install version:2019.11.28 version range:>=2017.4.17)
| | | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | | +- idna(install version:2.7 version range:>=2.5,<2.8)
| | | +- urllib3(install version:1.24.3 version range:>=1.21.1,<1.25)
| +- gdal(install version:1.10.0 version range:==1.10.0)
| +- gdata(install version:2.0.18 version range:==2.0.18)
| +- google-api-python-client(install version:1.6.4 version range:==1.6.4)
| | +- httplib2(install version:0.14.0 version range:<1dev,>=0.9.2)
| | +- oauth2client(install version:4.1.2 version range:<5.0.0dev,>=1.5.0)
| | | +- httplib2(install version:0.14.0 version range:>=0.9.1)
| | | +- pyasn1(install version:0.4.8 version range:>=0.1.7)
| | | +- pyasn1-modules(install version:0.2.7 version range:>=0.0.5)
| | | +- rsa(install version:4.0 version range:>=3.1.4)
| | | | +- pyasn1(install version:0.4.8 version range:>=0.1.3)
| | | +- six(install version:1.13.0 version range:>=1.6.1)
| | +- six(install version:1.13.0 version range:>=1.6.1,<2dev)
| | +- uritemplate(install version:3.0.0 version range:<4dev,>=3.0.0)
| +- iso8601(install version:0.1.12 version range:==0.1.12)
| +- moment(install version:0.8.2 version range:==0.8.2)
| | +- dateparser(install version:0.7.2 version range:>=0.6)
| | | +- python-dateutil(install version:2.8.1 version range:*)
| | | +- pytz(install version:2017.2 version range:*)
| | | +- regex(install version:2019.11.1 version range:*)
| | | +- tzlocal(install version:2.0.0 version range:*)
| | | | +- pytz(install version:2017.2 version range:*)
| | +- pytz(install version:2017.2 version range:>=2017.2)
| | +- times(install version:0.7 version range:*)
| | | +- arrow(install version:0.15.4 version range:*)
| | | | +- backports.functools-lru-cache(install version:1.6.1 version range:>=1.2.1)
| | | | +- python-dateutil(install version:2.8.1 version range:*)
| +- nose(install version:1.3.7 version range:==1.3.7)
| +- oauth2client(install version:4.1.2 version range:==4.1.2)
| | +- httplib2(install version:0.14.0 version range:>=0.9.1)
| | +- pyasn1(install version:0.4.8 version range:>=0.1.7)
| | +- pyasn1-modules(install version:0.2.7 version range:>=0.0.5)
| | +- rsa(install version:4.0 version range:>=3.1.4)
| | | +- pyasn1(install version:0.4.8 version range:>=0.1.3)
| | +- six(install version:1.13.0 version range:>=1.6.1)
| +- oauthlib(install version:2.0.6 version range:==2.0.6)
| +- pillow(install version:4.3.0 version range:==4.3.0)
| +- psycopg2(install version:2.7.3.1 version range:==2.7.3.1)
| +- python-magic(install version:0.4.15 version range:==0.4.15)
| +- pytz(install version:2017.2 version range:==2017.2)
| +- requests(install version:2.20.0 version range:==2.20.0)
| | +- certifi(install version:2019.11.28 version range:>=2017.4.17)
| | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | +- idna(install version:2.7 version range:>=2.5,<2.8)
| | +- urllib3(install version:1.24.3 version range:>=1.21.1,<1.25)
| +- tweepy(install version:3.5.0 version range:==3.5.0)
| | +- requests(install version:2.20.0 version range:>=2.4.3)
| | | +- certifi(install version:2019.11.28 version range:>=2017.4.17)
| | | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | | +- idna(install version:2.7 version range:>=2.5,<2.8)
| | | +- urllib3(install version:1.24.3 version range:>=1.21.1,<1.25)
| | +- requests-oauthlib(install version:1.3.0 version range:>=0.4.1)
| | +- six(install version:1.13.0 version range:>=1.7.3)

Error

ERROR: Cannot install -r requirements.txt (line 1) and oauthlib==2.0.6 because these package versions have conflicting dependencies.                   
                                                                                                              The conflict is caused by:                               The user requested oauthlib==2.0.6                     django-oauth-toolkit 0.12.0 depends on oauthlib==2.0.1 

Solution

We analyze your project according to the call graph, and now give you the following suggestion, loosen your direct dependency to be oauthlib==* . I have checked that this version will not affect the normal operation of your program

Thanks for your help. Best, SmartPycg

SmartPycg avatar May 18 '22 07:05 SmartPycg