zvtvz / zvt

modular quant framework.
https://zvt.readthedocs.io/en/latest/
MIT License
3.13k stars 856 forks source link

Installation fails due to conflicting pandas version #71

Closed NeolithEra closed 4 years ago

NeolithEra commented 4 years ago

Hi, users are unable to run Zvt due to dependency conflict with pandas package. As shown in the following full dependency graph of Zvt, Zvt requires pandas >=0.24.2,while jqdatasdk * requires pandas <=0.25.3,>=0.16.2.

According to pip’s “first found wins” installation strategy, pandas 1.0.3 is the actually installed version. However, pandas 1.0.3 does not satisfy pandas <=0.25.3,>=0.16.2.

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

zvt - 0.7.8
| +- apscheduler(install version:3.6.3 version range:>=3.4.0)
| | +- pytz(install version:2019.3 version range:*)
| | +- setuptools(install version:46.1.3 version range:>=0.7)
| | +- six(install version:1.14.0 version range:>=1.4.0)
| | +- tzlocal(install version:2.1b1 version range:>=1.2)
| +- arrow(install version:0.15.5 version range:>=0.11.0)
| | +- backports.functools-lru-cache(install version:1.6.1 version range:>=1.2.1)
| | +- python-dateutil(install version:2.8.1 version range:*)
| +- ccxt(install version:1.26.23 version range:>=1.17.191)
| +- demjson(install version:2.2.4 version range:>=2.2.4)
| +- html5lib(install version:1.0 version range:>=1.0.1)
| | +- six(install version:1.14.0 version range:>=1.9)
| | +- webencodings(install version:0.5.1 version range:*)
| +- jqdatasdk(install version:1.8.1 version range:*)
| | +- msgpack(install version:1.0.0 version range:>=0.4.7)
| | +- numpy(install version:1.18.2 version range:>=1.9.2)
| | +- pandas(install version:0.25.3 version range:<=0.25.3,>=0.16.2)
| | +- pymysql(install version:0.9.3 version range:>=0.7.6)
| | +- requests(install version:2.23.0 version range:*)
| | | +- certifi(install version:2020.4.5.1 version range:>=2017.4.17)
| | | +- chardet(install version:3.0.4 version range:>=3.0.2,<4)
| | | +- idna(install version:2.9 version range:>=2.5,<3)
| | | +- urllib3(install version:1.25.9 version range:>=1.21.1,<1.26)
| | +- six(install version:1.14.0 version range:*)
| | +- SQLAlchemy(install version:1.3.16 version range:>=1.2.8)
| | +- thriftpy2(install version:0.4.11 version range:>=0.3.9)
| | | +- ply(install version:3.11 version range:>=3.4,<4.0)
| +- marshmallow(install version:3.5.1 version range:>=3.2.2)
| +- marshmallow-sqlalchemy(install version:0.22.3 version range:>=0.19.0)
| | +- marshmallow(install version:3.5.1 version range:>=2.15.2)
| | +- SQLAlchemy(install version:1.3.16 version range:>=1.2.0)
| +- pandas(install version:1.0.3 version range:>=0.24.2)
| +- plotly(install version:4.6.0 version range:>=4.1.0)
| | +- retrying(install version:1.3.3 version range:>=1.3.3)
| | | +- six(install version:1.14.0 version range:>=1.7.0)
| | +- six(install version:1.14.0 version range:*)
| +- requests(install version:2.23.0 version range:>=2.20.1)
| | +- certifi(install version:2020.4.5.1 version range:>=2017.4.17)
| | +- chardet(install version:3.0.4 version range:>=3.0.2,<4)
| | +- idna(install version:2.9 version range:>=2.5,<3)
| | +- urllib3(install version:1.25.9 version range:>=1.21.1,<1.26)
| +- schedule(install version:0.6.0 version range:>=0.6.0)
| +- simplejson(install version:3.17.0 version range:>=3.16.0)
| +- sqlalchemy(install version:1.3.16 version range:>=1.2.14)
| +- tzlocal(install version:2.1b1 version range:>=1.5.1)
| +- xlrd(install version:1.2.0 version range:>=1.1.0)
| +- zvdata(install version:1.2.3 version range:>=1.2.3)

Thanks for your help. Best, Neolith

NeolithEra commented 4 years ago

Solution

  1. Loosen the version range of pandas to be <=0.25.3.
  2. Remove your direct dependency pandas, and use the pandas transitively introduced by jqdatasdk.
  3. Ask your direct dependency jqdatasdk to loosen the version range of pandas to be >=0.16.2. @foolcage Which solution do you prefer, 1 ,2 or 3? Please let me know your choice. May I pull a request to solve this issue?
foolcage commented 4 years ago

@NeolithEra thanks for your advice.

I prefer 1 now and pr is welcome.

dwj1979 commented 4 years ago

ERROR: jqdatasdk 1.8.1 has requirement pandas<=0.25.3,>=0.16.2, but you'll have pandas 1.0.1 which is incompatible.

foolcage commented 4 years ago

thanks.I have fixed it in 0.8.0 release.